练习算法,看到了一个灵活运用map(map<key,value>)的题解,在此,回顾一下map相关操作。
1、map内的键值对按照键(key)升序排列。
2、map的插入是一种不可覆盖的,如果map中已经存在某个key值(只查看key 不考虑value值),则不能继续进行插入。执行插入后会返回一个 pair<iterator,bool> 对象, 第一个参数是一个迭代器,如果能进行插入,返回插入的pair对象,否则返回key值重复的pair对象。第二个参数表示是否成功插入,成功插入返回1,反之,返回0。当然,也可以借助count(key)进行判断后在进行插入,返回值为1表示已经存在键值为key的键值,返回值为0表示不存在。
测试代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
map<int,int>mp;///map<key,value>
mp[3]=4;///逆序构造
mp[2]=3;
mp[1]=2;
///顺序输出,结果表明,map内部是按照key值升序排序的
for(auto it=mp.begin();it!=mp.end();it++)
cout<<it->first<<" "<<it->second<<endl;
///判断map中是否含有某个key值,count返回值为1表示已经存在,返回值为0表示不存在
cout<<mp.count(1)<<endl;
///插入key值不重复的对象,auto可以自动识别类型,make_pair(key,value)直接构造map键值对
auto re_no=mp.insert(make_pair(5,4));
cout<<re_no.first->first<<" "<<re_no.first->second<<" "<<re_no.second<<endl;
///插入key值重复的对象
auto re_yes=mp.insert(make_pair(1,4));
cout<<re_yes.first->first<<" "<<re_yes.first->second<<" "<<re_yes.second<<endl;
return 0;
}
测试结果: