在map中,查找可以使用map自带的find(key)方法:
map<int,int> m;
if(m.find(key)==m.end())
cout<<"不存在值为key的键"<<endl; //查找失败
else{
map<int,int>::iterator it=m.find(key); //查找成功返回迭代器
cout<<it->first<<" "<<it->second<<endl;
}
而在vector中需要借助algorithm下的find函数进行查找:
vector<int> v;
if(find(v.begin(),v.end(),key)==v.end())
cout<<"不存在值为key的键"<<endl; //查找失败
else{
vector<int>::iterator it=find(v.begin(),v.end(),key); 查找成功返回迭代器
cout<<*it<<endl;
}
vector中的erase方法参数必须是迭代器,map中的erase方法参数可以是迭代器也可以是key值。
map中不允许键值重复,但multimap允许:
区别在于multimap没有重载operator[]。
multimap<int,int> m;
m.insert(make_pair(1,2));
m.insert(make_pair(1,3));
for(multimap<int,int>::iterator it=m.begin();it!=m.end();it++){
printf("%d %d\n",it->first,it->second);
}