c++ - 为什么 std::unordered_map::emplace() 会失败?

标签 c++ c++11 unordered-map

我有一个std::unordered_map,我emplace()一个对象通过:

my_map.emplace(std::piecewise_construct,
               std::forward_as_tuple(key),
               std::forward_as_tuple(value1, value2));

这在运行时的某个时刻失败,返回的元组的第二个位置为 false。有没有办法获得有关正在发生的事情的更多信息? top 没有显示任何内存问题。

最佳答案

.second 中的 false 表示“等价元素已经存在”。在这种情况下,.first 中的迭代器指向该等效元素。

所以发生的事情是您在 map 中已经有了 key,您可以在返回值上使用 .first 来访问它。

关于c++ - 为什么 std::unordered_map::emplace() 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23062672/

相关文章:

c++ - Linux 透明窗口

c++ - 后缀符号的中缀...测试用例循环中的错误

c++ - 为什么 move on const 对象有效?

C++11 std::thread std::move 提示尝试使用已删除的函数

c++ - 我如何散列 std::unordered_map::const_iterator?

c++ - std::unordered_map 不释放内存

c++ - 接受大括号构造对象的可变模板列表的函数

c++ - 如何以自定义类/比较器为键创建 map

c++ - 复制指针

c++ - 提升进程间 unordered_map 字符串