如何处理已经存在的密钥的插入?

时间:2019-04-14 02:24:20

标签: c++ dictionary

处理将键插入已经包含该键的映射的尝试的标准方法是什么?

  1. 是否应该引发错误?

  2. 插入函数是否应该简单地返回而不添加键/值对?

  3. 插入功能是否应该删除已经存在的键/值对并插入新的键/值对?

谢谢:)

1 个答案:

答案 0 :(得分:2)

std::map::insert返回一个(迭代器,布尔值)对。如果不存在该键,则将其插入给定值,然后该函数将返回一个迭代器,并在第二个组件中返回true

如果键已经存在,则保留旧值。该函数将迭代器返回到现有元素,并在第二个组件中返回false


从C ++ 17开始,std::map还提供了insert_or_assign成员函数。它的行为方式相同,不同之处在于,如果密钥已经存在,则旧值将替换为新值。