【发布时间】:2016-02-12 03:12:04
【问题描述】:
我正在努力使用 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::pair<_ty1> std::_Hash<_traits>::emplace(_Valty &&)' : 需要 1 个参数 - 提供 2 个
我很困惑,因为互联网上有几个使用这种精确语法的例子。例如,cplusplus.com here。
我做错了什么?
【问题讨论】:
-
您的编译器很旧,仅部分支持 C++11... 很容易通过 google 找到详细信息,但如果可以,升级效率更高。
-
确切的sintax,你说? link
标签: c++ visual-studio visual-studio-2010 c++11