【STL】6.<map/multimap>
map/multimap
- 前言
- map/multimap容器
- 一.pair对组(头文件utility)
- 1.pair初始化
- 2.pair数据访问
- 二.map容器的构造与赋值
- 三.map容器的大小与交换
- 四.map容器的插入与删除
- 五.map容器的查找与统计
- 六.multimap容器
- 总结
前言
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。
map/multimap容器
要使用map/multimap要头文件map
map所有的元素都是pair,pair的第一个元素为key(键值),起到索引的作用,第二个元素为value(实值)。
map/multimap属于关联式容器,底层数据结构是用二叉树实现的。它的优点是可以根据key值快速找到value值
map与multimap的区别:map不允许容器中有重复的key值元素;而multimap允许容器中有重复的key值元素
一.pair对组(头文件utility)
pair只含有两个元素可以看作是只有两个元素的结构体。对于成对出现的数据,利用队组可以返回两个数据
在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型不必相同
1.pair初始化
pair<int, int>p1;
p1.first = 1, p1.second = 2;
pair<int, int>p2(10, 20);
pair<int, int)p3 = make_pair(1, 2);
//在使用make_pair时,如果定义的是一个int类型,使用make_pair传入float类型的参数,会将float类型转换为int类型
2.pair数据访问
pair<int, int>p1(1, 2);//初始化
cout << p.first << p.second << endl;
//和结构体类似,first代表第一个元素,second代表第二个元素
二.map容器的构造与赋值
ap<int, int> m1 = { pair<int, int>(1, 10), pair<int, int>(2, 20) };
map<int, int> m2 = { {1, 10}, {2, 20} };
map<int, int> m3;//初始化一个空map
map<int, int> m4(m3);//m3复制给m4
map<int, int> m5;
m5 = m4;//将m4复制给m5
三.map容器的大小与交换
m1.size();//输出元素个数
m2.empty();//判断是否为空
m3.swap(m4);//交换两个集合容器
四.map容器的插入与删除
m3.insert(pair<int, int>(1, 10));
m3.insert(make_pair(2, 22));
m3[6] = 66;//与m3.insert(pair<int, int>(6, 66));相等
m4.clear();//将所有的元素清除
m5.erase(n);;//删除容器中值为n的元素
m6.erase(m6.begin(), m6.end());//删除容器的所有元素
五.map容器的查找与统计
find(key);//查找key是否存在,返回该键的迭代器,若不存在返回map.end()
cout(key);//统计ley的元素个数,因为map不能重复所有要么为0要么为1
六.multimap容器
multimap是map映射容器的一种,其拥有map的全部内容,并在此基础上multimap还具有可以重复保存元素的功能,与之前的multiset差不多
multimap使一个key值能够与多个value对应,产生一种如一个学生有多门考试成绩一样的映射
总结
希望大家点赞收藏我会尽快更新STL!!!