![](/img/trans.png)
[英]What is the difference between unordered_map::emplace and unordered_map::insert in C++?
[英]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"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.