C++ STL 常用容器用法总结
1. map 用法
定义
map 是 STL 的一个关联容器,它提供一对一的映射。第一个可以称为关键字 (key),每个关键字只能在 map 中出现一次;第二个称为该关键字的值 (value)。map 是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。
map 可以自动建立 Key-value 的对应,key 和 value 可以是任意类型。根据 key 值快速查找记录,查找的复杂度基本是 log(n)。快速插入 Key-Value 记录。快速删除记录,根据 Key 修改 value 记录,遍历所有记录。
map 内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而 AVL 是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此 map 内部的所有元素都是有序的,红黑树的每一个节点都代表着 map 的一个元素。
函数方法
| 函数 | 说明 |
|---|---|
| begin()/end() | 返回指向 map 头部/尾部的迭代器 |
| clear() | 清空所有元素 |
| count() | 查看元素是否存在,因为 map 中键是唯一的,所以存在返回 1,不存在返回 0 |
| empty() | 如果 map 为空则返回 true,否则返回 false |
| erase(it) | 删除迭代器对应的键和值 |
| erase(key) | 根据映射的键删除键和值 |
| erase(first,last) | 删除左闭右开区间迭代器对应的键和值 |
| find() | 返回键为 key 的映射的迭代器,数据不存在时,返回 mp.end() |
| insert() | 插入元素 |
| size() | 返回 map 中元素的个数 |
| lower_bound() | 返回一个迭代器,指向键值>= key 的第一个元素 |
| upper_bound() | 返回一个迭代器,指向键值> key 的第一个元素 |
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
// 定义一个 map 对象
map<int,string>mp1;
//插入
// 第一种 用 insert 函數插入 pair
mp1.insert(pair<, string>(, ));
mp(map<, string>::(, ));
mp1[] = ;
mp({,});
iter = mpind();
(iter!=mp()) cout<<<<iter->second<<endl;
cout<<<<endl;
iter = mpind();
mp(iter);
n = mp();
mp(mp(), mp());
Size = mp();
map<,string>mp2={ {, }, {, }, {, } };
it = mpower_bound();
(it != mp()) {
cout << << it->first << << it->second << endl;
} {
cout << << endl;
}
;
}

