c++ - STL <map> 允许重复对吗?

标签 c++ dictionary stl

我编写了以下代码,并对输出感到惊讶。听说<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/

相关文章:

c++ - 带有默认参数的成员函数指针

c++ - Visual C++ 编译器与其他 C++ 编译器的比较

c++ - std::map 的比较参数对于严格排序有什么要求?

python - 如何在Python中的字典中查找列表中的元素?

c++ - STL 容器中的常量和非常量

c# - 为什么某些 Microsoft 语言称为 "visual"? (Visual C#、Visual Basic .NET、Visual C++)

python - 合并 2 个字典中的值 (Python)

具有两个搜索条件的 C++ 关联容器

c++ - 在 C++ 中为 OSX 创建共享库

c++ - 从客户端接收消息时如何解决窗口卡住问题(无响应)?