map/multimap的简介
map是标准的关联式容器,一个map里存储的元素是一个键值对序列,叫做(key,value)键值对。它提供基于key快速检索数据的能力。
multimap与map的区别:
map支持唯一键值,每个键只能出现一次;而multimap中相同键可以出现多次。multimap不支持[]操作符。
map/multimap对象的默认构造
map/multimap采用模板类实现,对象的默认构造形式:
map mapTT;
multimap multimapTT;
如:
map mapA;
map mapB;
其中T1,T2还可以用各种指针类型或自定义类型
map和multimap对象的带参数构造
方式一:map(beg,end); 将(beg, end)区间中的元素拷贝给本身。
方式二:map(const map &mapObject); 拷贝构造函数。
map的插入与迭代器
map.insert(...); //往容器插入元素,返回pair
map中插入元素的四种方式:
假设 map mapStu;
方式一、通过pair的方式插入对象
mapStu.insert( pair(1,"张三") );
方式二、通过pair的方式插入对象
mapStu.inset(make_pair(2, “李四”));
方式三、通过value_type的方式插入对象
mapStu.insert( map::value_type(3,"王五") );
方式四、通过数组的方式插入值
mapStu[4] = "赵六";
mapStu[5] = “小七";
注意:
迭代器
方式一 构造一个pair ,然后插入
pair
map/multimap 排序
map对象的拷贝构造与赋值
map(const map &mp); 拷贝构造函数
map& operator=(const map &mp); 重载等号操作符
map.swap(mp); 交换两个集合容器
例如:
map mapA;
mapA.insert(pair(2, "李四"));
mapA.insert(pair(1, "张三"));
mapA.insert(pair(3, "王五"));
mapA.insert(pair(4, "赵六"));
map mapB(mapA); 拷贝构造,此时mapB 和mapA中元素一致
map mapC;
mapC = mapA; 赋值,此时mapC 和mapA中元素一致
mapC[3] = "老张"; mapC中,此时包含 张三, 李四, 老张, 赵六
mapC.swap(mapA); mapA和mapC交换
map的大小
map.size(); 返回容器中元素的数目
map.empty(); 判断容器是否为空
map mapA;
mapA.insert(pair(2, "李四"));
mapA.insert(pair(1, "张三"));
mapA.insert(pair(3, "王五"));
mapA.insert(pair(4, "赵六"));
map的删除
map.clear(); 删除所有元素
map.erase(pos); 删除pos迭代器所指的元素,返回下一个元素的迭代器。
map.erase(beg,end); 删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
map.erase(key); 删除容器中key为key的对组,返回删除的对组个数
Map.erase(key_type *first, key_type *last) //删除数组指定的半闭半开的区间中特定的
key对应的所有队组
map mapA;
mapA.insert(pair(2, "李四"));
mapA.insert(pair(1, "张三"));
mapA.insert(pair(3, "王五"));
mapA.insert(pair(4, "赵六"));
删除区间内的元素,迭代器指示区间(半闭半开)
map::iterator itBegin=mapA.begin();
++ itBegin;
map::iterator itEnd=mapA.end();
mapA.erase(itBegin,itEnd); //此时容器mapA仅仅包含{1,"张三"}一个元素。
mapA.insert(pair(2, "李四"));
mapA.insert(pair(3, "王五"));
mapA.insert(pair(4, "赵六"));
删除容器中的第一个元素,使用迭代器指示位置
mapA.erase(mapA.begin()); //mapA包含{2,"李四"}{3,"王五"}{4,"赵六"}三个元素
删除容器中key为4的元素
mapA.erase(4);
删除mapA的所有元素
mapA.clear(); //容器为空
map/multimap的查找