【问题标题】:When will std::unordered_map::insert fail?std::unordered_map::insert 什么时候会失败?
【发布时间】:2017-03-17 13:06:08
【问题描述】:

我注意到std::unordered_mapinsert 函数返回一个std::pair

std::pair 的第二个元素显示该值是否真的被插入。但是,我对此感到困惑。由哈希映射实现的std::unordered_map 能否在插入时失败?什么时候会发生?

这是cppreference的描述:

返回值
1-2) 返回一个对,由一个指向插入元素(或阻止插入的元素)的迭代器和一个表示插入是否发生的布尔值组成。

【问题讨论】:

  • 您只能在 unordered_map、unordered_set、map 或 set 中放置唯一键。如果 key 已经存在,第二个参数将被设置为 false,并且新的插入将被拒绝。
  • 答案在您引用的同一页上逐字逐句拼写出来。 -1
  • 我已经调整了你问题的英文。对于母语人士来说,这已经完全可以理解,但对于来自不同背景的另一位非母语人士来说,可能就无法理解了。如果您不理解我使用的措辞,请重新编辑(或直接还原)。
  • 在这种情况下,最好了解措辞的含义,而不是将帖子恢复为以前的不准确形式。

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


【解决方案1】:

从您链接到的同一页面:

将元素插入容器中,如果容器尚未包含具有等效键的元素

(我的重点)

换句话说,boolfalse 如果键已经存在于地图中。

请注意,其他失败(如分配失败)将由异常报告(并且容器将保持不变)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    相关资源
    最近更新 更多