我编写了以下代码,并对输出感到惊讶。听说<map>
避免键冲突,但这里似乎允许插入重复对。
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<string,char> namemap;
namemap["yogi"]='c';
namemap.insert(pair<string,char>("yogendra",'a'));
namemap.insert(pair<string,char>("yogendra",'b'));
cout<<namemap["yogendra"]<<endl;
return 0;
}
此代码输出 a
.您可以在 C++ Shell 上运行它.
避免冲突是否意味着我们不能使用相同的 key 输入多对?
最佳答案
第二个insert
使用相同的 key 是无操作的。它只是返回一个指向现有元素的迭代器。
std::map::insert()
有一个返回值,你应该检查一下。
它的类型是 std::pair<iterator,bool>
.该对的第二个元素告诉您该元素是否已被插入,或者是否已经存在具有相同键的条目。
cout << namemap.insert(pair<string,char>("yogendra",'a')).second << endl;
cout << namemap.insert(pair<string,char>("yogendra",'b')).second << endl;
关于c++ - STL <map> 允许重复对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10732074/