std :: multimap :: emplace是否会覆盖旧密钥?

时间:2016-12-28 10:52:14

标签: c++ multimap

   a b length       date
1: 1 2      3 2016-12-28
2: 1 2      3 2016-12-29
3: 1 2      3 2016-12-30

这会回显1还是2?即,我可以使用emplace将新对添加到多图,而不会影响具有相同密钥的旧对吗?

3 个答案:

答案 0 :(得分:0)

通过试验http://cpp.sh/此输出2,emplace不会用相同的密钥覆盖旧对。

答案 1 :(得分:0)

最好自己查看。从定义std::multimap允许对不同的值使用相同的键,std::map不会。输出为:2,因此允许在multimap中的相同键下具有2个不同的值。

IdeONE:https://ideone.com/eRkBmV

答案 2 :(得分:0)

来自 [associative.reqmts] / 4 (强调我的):

  

关联容器支持唯一键,如果每个键最多可包含一个元素。否则,它支持等效键。 set和map类支持唯一键; multiset和multimap类支持等效键。对于multiset和multimap,insert,emplace和erase保留等效元素的相对顺序

事实上,multimap的重点是能够使用相同的密钥存储多个元素,而不是map