[英]What is the difference between these two ways of unordered_map declaration?
[英]difference between two ways to insert into map
我被問到兩種方法將記錄插入地圖,
mymap["foo"] = 123;
mymap.insert("foo", 123);
除了語法之外,這兩者之間有什么區別嗎?
如果密鑰“foo”存在,則通過[]
的第一個選項將覆蓋用鍵“foo”存儲的值,而如果密鑰已經存在則insert
將無法插入數據,並且將指示其返回值成功或失敗。
除了蒂莫的出色回答 -
如果“foo”中沒有元素,則第一個將默認在“foo”位置構造一個值,然后使用對默認構造的“foo”值的引用,將123分配給該位置。
干得好
mymap["foo"]
將導致值默認構造並放置在“foo”位置。 這樣做時要小心
int value = mymap["foo"]
因為它會起作用, 即使你從未明確指定或插入foo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.