C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。
一,初始化
//头文件
#include<map>
map<int, string> ID_Name;
或map<int, string> ID_Name = { { 2015, "Jim" }, { 2016, "Tom" }, { 2017, "Bob" } };
二,插入
1.使用[ ]进行单个插入:
ID_Name[2015] = "Tom";// 如果已经存在键值2015,则会作赋值修改操作,如果没有则插入,Tom是关键字对应值value;
2.insert:
ID_Name.insert({2,“TTT”}); //只有key=2处无value时才能插;
三,取值
Map中元素取值主要有at和[ ]两种操作,at会作下标检查,而[]不会,即若没有关键字2016,使用[]取值会导致插入,语句不会报错,但打印结果为空。
cout<<ID_Name[2016]<<endl;
或ID_Name.at(2016) = "Bob";
四, 删除
1.// 根据Key来进行删除, 返回删除的元素数量,在map里结果非0即1
ID_Name.erase( const key_type& key );如cout<<maps.erase(0);
2.// 删除迭代器指向位置的键值对,并返回一个指向下一元素的迭代器
iterator erase( iterator pos )
3.// 清空map,清空后的size为0
void clear();
五,查找
// 关键字查询,找到则返回指向该关键字的迭代器,否则返回指向end的迭代器
iterator find (const key_type& k);
map<string,int> maps;
maps.insert({"sec",44});
maps.insert({"sef",1});
cout<<maps.find("sec")->second; //查找到key=sec后返回对应的value值,->second
-----------------
maps.find(s[i])==maps.end() //用这个判断能否找到,为true表示没找到
注意:
map常常用来解决“第一个不重复”问题!
思路:先扫描一遍,再扫描一遍!