map需要注意的一些问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38126105/article/details/82726424

map容器常见的几种赋值方式

map<int,string> mp;
mp.insert(make_pair(0,"aaaaa"));
mp.insert(pair<int, string>(3, "hi"));
mp[45] = "world";

这几种方式有些细微但是很重要的区别,map是键值对的键必须是唯一的,当插入时,该键已经存在,使用insert则会插入失败,而使用[key] = value;的方法则会覆盖原来的键值对。那我们如何知道调用的insert是否成功呢?其实insert的返回值pair 已经告诉了我们如:

map<int,string> mp;
//auto自动类型推导,C++,auto在此等价于pair<map<int,string>::iterator,bool>
auto result = mp.insert(make_pair(0,"hello"));
if(false == result.second)
{
    cout << "插入失败" << endl;
}
else
{
    cout << "插入成功" << endl;
}

map容器的访问

一般关联容器没有提供直接访问的方式,所以访问容器中的元素,必须借用迭代器。如:

map<int,string> mp;
mp[1] = "hi";
mp[2] = "hello";
mp[52] = "fhgg";
for(map<int,string>::iterator iter = mp.begin();iter != mp.begin();++iter)
{
    cout << "iter->first = " <<iter->first << "iter->second = "<<iter->second << endl;
}

map容器的查找

map容器的查找是通过find函数,通过对应的key去获取对应value。并且需要判断find的 结果是否成功

map<int,string> mp;
mp[1] = "hi";
mp[2] = "hello";
mp[52] = "fhgg";
map<int,string>::iterator iter = mp.find(52);
if(iter != mp.end())
{
    cout << "key = 52, value = " << iter->second << endl;
}
else
{
    cout << "查找失败" << endl;
}

猜你喜欢

转载自blog.csdn.net/m0_38126105/article/details/82726424