在Visual Studio中安装并插入unordered_map?

时间:2016-02-12 03:12:05

标签: c++ visual-studio visual-studio-2010 c++11

我正努力使用VS2010在c ++中使用unordered_map做最基本的事情:插入一些内容。

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

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

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

  

错误1错误C2678:二进制&#39; ==&#39; :找不到哪个运算符采用类型为&#39; const std :: string&#39;的左手操作数。 (或者没有可接受的转换)c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ xfunctional

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

  

错误1错误C2780:&#39; std :: pair&lt; _Ty1,_Ty2&gt; std :: _ Hash&lt; _Traits&gt; :: emplace(_Valty&amp;&amp;)&#39; :期望1个参数 - 提供2个

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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

这两个函数接受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