有人问我有两种方法将记录插入地图,
mymap["foo"] = 123;
mymap.insert("foo", 123);
除了语法之外,这两者之间有什么区别吗?
答案 0 :(得分:8)
如果密钥“foo”存在,则通过[]
的第一个选项将覆盖使用密钥“foo”存储的值,而如果密钥已存在,则insert
将无法插入数据并将表明其返回值的成功或失败。
答案 1 :(得分:7)
除了蒂莫的出色答案 -
如果“foo”中没有元素,则第一个将默认在“foo”位置构造一个值,然后使用对默认构造的“foo”值的引用,将123分配给该位置。
刚做
mymap["foo"]
将导致值默认构造并放置在“foo”位置。这样做时要小心
int value = mymap["foo"]
因为它会起作用,即使你从未明确指定或插入foo