插入地图的两种方式之间的差异

时间:2011-04-19 01:07:07

标签: c++ stl map

有人问我有两种方法将记录插入地图,

mymap["foo"] = 123;

mymap.insert("foo", 123);

除了语法之外,这两者之间有什么区别吗?

2 个答案:

答案 0 :(得分:8)

如果密钥“foo”存在,则通过[]的第一个选项将覆盖使用密钥“foo”存储的值,而如果密钥已存在,则insert将无法插入数据并将表明其返回值的成功或失败。

答案 1 :(得分:7)

除了蒂莫的出色答案 -

如果“foo”中没有元素,则第一个将默认在“foo”位置构造一个值,然后使用对默认构造的“foo”值的引用,将123分配给该位置。

刚做

mymap["foo"]

将导致值默认构造并放置在“foo”位置。这样做时要小心

int value = mymap["foo"]

因为它会起作用,即使你从未明确指定或插入foo

相关问题