map/multimap容器
1.map/multimap也是关联式容器,容器自身有规则,通过键值排序,map容器中的元素是对组,对组的第一个元素是键值,不能改变,第二个元素是实值,可以改变
2.数据结构:平衡二叉树
3.迭代器:双向迭代器
4.map容器和multimap容器的区别是multimap允许有相同的元素
5.常用的api:
1.构造
map<T1, T2> mapTT;//map默认构造函数:
map(const map &mp);//拷贝构造函数
2.赋值
map& operator=(const map &mp);//重载等号操作符
swap(mp);//交换两个集合容器
3.大小
size();//返回容器中元素的数目
empty();//判断容器是否为空
4.查找
find(key);//查找键key是否存在,若存在,返回该键的元素的迭代器;/若不存在,返回map.end();
count(keyElem);//返回容器中key为keyElem的对组个数。对map来说,要么是0,要么是1。对multimap来说,值可能大于1。
lower_bound(keyElem);//返回第一个key>=keyElem元素的迭代器。
upper_bound(keyElem);//返回第一个key>keyElem元素的迭代器。
equal_range(keyElem);//返回容器中key与keyElem相等的上下限的两个迭代器。
5.插入
map.insert(...); //往容器插入元素,返回pair<iterator,bool>
map<int, string> mapStu;
// 第一种 通过pair的方式插入对象
mapStu.insert(pair<int, string>(3, "小张"));
// 第二种 通过pair的方式插入对象
mapStu.inset(make_pair(-1, "校长"));
// 第三种 通过value_type的方式插入对象
mapStu.insert(map<int, string>::value_type(1, "小李"));
// 第四种 通过数组的方式插入值
mapStu[3] = "小刘"; //3key 小刘是value
mapStu[5] = "小王";
6.删除
clear();//删除所有元素
erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。
erase(beg,end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
erase(keyElem);//删除容器中key为keyElem的对组。
标签:map,keyElem,迭代,容器,元素,multimap
From: https://www.cnblogs.com/wbcde116/p/18025734