繁体   English   中英

在Visual Studio中的unordered_map中插入并插入?

[英]Emplace and insert in unordered_map in Visual Studio?

我正在努力使用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 \\包括\\ xfunctional

cats.emplace("Kyra", "Shadow"); 没有注释,错误是:

错误1错误C2780:'std :: pair <_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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM