我是靠谱客的博主 重要羽毛,最近开发中收集的这篇文章主要介绍7.映射容器map,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一. map是STL的一个关联容器,翻译为映射,数组也是一种映射。如:int a[10]是int到int的映射,而a[5]=25,是把5映射到25。数组总是将int类型映射到其他类型。这带来一个问题,有时候希望把string映射成一个int ,数组就不方便了,这时就可以使用map

二. map可以将任何基本类型【包括STL容器】映射到任何基本类型【包括STL容器】,map提供关键字到值的映射,其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值

三. 由于这个特性,普通int数组是map<int,int> mp;字符到整型的映射,就是map<char,int> mp,而字符串到整型的映射,就必须是map<string,int> mp;map的键和值也可以是STL容器,如map<vector<int>,int> mp,而且键和值都是唯一的

四. map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处,map的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改value,而不能修改key

下面将介绍map容器的一些常见用法
1.map的常见构造种类

(1) map<int, int> mp;
(2) map<char, int> mp; 或者 map<int, char> mp;
(3) map<string, int> mp; 或者 map<int, string> mp;
(4) map<string, string> mp;
(5) map<int, node> mp; //node在这里为结构体类型
(6) map<int, vector<int>> mp;

2.向map中插入元素

(1) mp[1]=100;
(2) mp['c']=100; 或者 mp[100]='c;
(3) mp["乖巧宝宝"]=100; 或者 mp[100]="乖巧宝宝"
(4) mp["乖巧宝宝"]="kunkun";
(5) mp[1]={"乖巧宝宝",100};
(6) mp[1]={1,2,3,4,5,6};

3.删除map中的某个元素

(1) 用迭代器删除
map<int, int>::iterator it = mp.find(4); //find函数找的是key
mp.erase(it);
(2) 用关键字删除
int num=mp.erase(4); //如果删除了会返回1,否则返回0

4.清空整个map

mp.clear();

5.判断map是否为空

mp.empty();

6.判断map中是否包含某个元素

mp.count(10); //如果找到会返回1,没找到会返回0

7.在map中查找某一元素

map<int, int>::iterator it = mp.find(5);
if (it != mp.end()) cout << "Yes";
else cout << "No";
//如果迭代器的返回值为mp.end(),则表示查找失败,否则表示查找成功

8.交换两个map

mp1.swap(mp2);
//使用下面这种写法也可以
swap(mp1,mp2);

9.对map进行遍历

map<int, int>::iterator it; //定义迭代器
for (it = mp1.begin(); it != mp1.end(); it++) {
cout << it->first << " " << it->second << endl; //通过迭代器进行遍历
}

10.对map排序

vector<pair<string, int>> v(mp.begin(), mp.end());
sort(v.begin(), v.end(), cmp);

最后

以上就是重要羽毛为你收集整理的7.映射容器map的全部内容,希望文章能够帮你解决7.映射容器map所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部