map
键值对映射map
是由键key
和值value
构成的一对单元,其中key
和value
可以是任意的数据类型。map
通过建立一颗红黑树(平衡二叉树)来实现对数据自动排序的功能,从而达到高效查询和检索的目的。c++ map类似于python里面的字典
键值对映射map
被包含在map
头文件中
1 定义和初始化
(1) 基本定义和初始化
map<int,string> mp; //定义一个空的string->int的映射
mp[1] = "wcm";
mp[2] = "我喜欢你"
(2 )使用insert函数初始化
map<string,int> mp; //定义一个空的string->int的映射
mp.insert(make_pair(1,"hello"));
(3) 初始化列表的方式:
map<int,string> mp = {{1,"wcm"},{2,"我喜欢你"}};
2 插入元素
可以使用insert函数或者使用[]操作符来赋值
mp.insert(make_pair(1,"hello"));
mp[2] = "you";
3 访问和遍历元素
你可以通过键直接访问元素的值,这可以通过[]或者find实现:
// 1 通过键直接访问
map<string,int> mp = {{"wcm",520},{"wmk"},999};
cout<<mp["wcm"]<<endl;//输出的是520;
// 2 通过find访问
auto it = mp.find("wmk");
if(it!= mp.end())
cout<<it->first<<' '<<it->second<<endl;//输出的是 wmk 999
// 3 键值对映射的遍历可以通过迭代器的方式
for(map<char, int>::iterator it=mp.begin();it!=mp.end();it++)
cout<<it->first<<" "<<it->second;
4 删除元素
可以通过erase()函数来删除指定键的元素
// 方式一:通过key键删除,方便实用
mp.erase("wmk");//删掉键为wmk的元素
// 方式二:通过迭代器指针的方式删除
map<char, int>::iterator it=mp.begin();
mp.erase(it);
5 是否存在
若要检查是否存在某个键,可以使用count或find()函数。如果键存在,count()将返回1,否则返回0。find()返回指向元素的迭代器,不存在则返回mp.end()
if(mp.count("wcm")!=0){
//键wcm在mp中
}
6 清空键值对映射
键值对映射的清空通过调用clear()
方法实现,清空后大小变为0
:
mp.clear();