在 Visual Studio 中放置和插入unordered_map

Emplace and insert in unordered_map in Visual Studio?

本文关键字:插入 unordered map Visual Studio      更新时间:2023-10-16

我正在努力使用 VS2010 在 c++ 中做最基本的unordered_map:插入一些东西。

unordered_map<string, string> cats;
//cats.insert("Adam", "Streak");
//cats.emplace("Kyra", "Shadow");

我确定我犯了一个非常简单的错误,但我现在花了两个小时试图弄清楚它。 上面的两个注释行在取消注释时都会出错。

取消注释cats.insert("Adam", "Streak");时,错误为:

错误

1 错误 C2678:二进制"==":找不到采用类型为"const std::string"的左侧操作数的运算符(或者没有可接受的转换( C:\Program Files (x86(\Microsoft Visual Studio 10.0\VC\include\xfunctional

取消注释cats.emplace("Kyra", "Shadow");时,错误为:

错误

1 错误 C2780:"std::p air<_Ty1,_Ty2> std::_Hash<_Traits>::emplace(_Valty &&(":需要 1 个参数 - 提供 2 个参数

我很困惑,因为互联网上有几个使用这种确切语法的例子。 例如,cplusplus.com 这里。

我做错了什么?

这两个函数都接受std::pair<A,B> make_pair是建立配对的最简单方法。

cats.insert(std::make_pair("Adam", "Streak"));
cats.emplace(std::make_pair("Kyra", "Shadow"));

cats.insert(std::pair<std::string, std::string>("Adam", "Streak"));

http://ideone.com/43GqyB