简介:map是key-value构成的集合 。key必须唯一。
特点:一对多映射,基于关键字快速查找,不允许重复值
- 主要用来查找
key
对应value
,要求key
必须是可排序的,必须支持<
比较运算符。 map
默认是以key
升序存放键值对<key,value>
数据,比较适合二分查找。
#include<iostream>
#include<map>
using namespace std;
int main(){
//1.定义:
map<string,string> dict;
//2.赋值:
//dict[key] = value
dict["apple"] = "苹果";
dict["orange"] = "橘子";
dict["banana"] = "香蕉";
string s;
cin >> s;
cout << dict[s] << endl; //输出s英文字符串对应的中文字符串
//3.遍历:
//迭代器
map<string,string>::iterator it = dict.begin();
while(it!=dict.end()) {
cout << it->first << "," << it->second << endl;
// key value
++it;
}
//pair类模板
for(pair<string,string> p:dict){
cout << p.first << "," << p.second << endl;
}
//4.元素删除:
dict.erase("apple");
for(pair<string,string> p:dict){
cout << p.first << "," << p.second << endl;
}
//5.查找(与set相同)
cout << (dict.count("apple") == 1) << endl;
cout << (dict.find("apple") != dict.end()) << endl;
//6.添加新数据:
dict["orange"] = "橙子";//原橘子变成橙子
//[]添加数据
//(1)如果存在,更新数据
//(2)如果不存在,并且value没有赋值,添加默认值(0)
dict.insert(pair<string,string>("grape","葡萄"));
dict.insert(make_pair("cat","猫"));
dict.insert({"dog","狗"});//C++11
dict.insert({"dog","犬"});//C++11 原狗还是狗,不能变为犬
//insert添加数据,如果key已经存在,则不会插入数据
}
面试题 16.02. 单词频率 - 力扣(LeetCode) (leetcode-cn.com)
205. 同构字符串 - 力扣(LeetCode) (leetcode-cn.com)