在 Visual Studio 中放置并插入 unordered_map?

Posted

技术标签:

【中文标题】在 Visual Studio 中放置并插入 unordered_map?【英文标题】:Emplace and insert in unordered_map in Visual Studio? 【发布时间】: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 【参考方案1】:

这两个函数都接受 std::pair&lt;A,B&gt; 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

【讨论】:

不幸的是,我在这样做时遇到了同样的错误 C2678。在这一点上,我倾向于 Visual Studio 非常破碎。 您使用的是哪个版本?我正在使用 VS 2015,它工作得非常好。我还添加了一个 ideone.com 链接,它也可以在那里工作。 谢谢何塞。我没有意识到 unordered_map 是在 c++11 中引入的。升级到 VS2015 后,它按预期工作。

以上是关于在 Visual Studio 中放置并插入 unordered_map?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Code 中放置自定义输入以进行调试

在 Visual Studio 中,我可以在只有调试符号的代码中放置断点吗?

转置并插入具有不同值的多行

visual studio里插flash要放啥控件

visualstudio输入前面的字后面会删除

如何在 Microsoft Visual Studio 2019 中调试 nestjs 程序?