2017-03-17 154 views
-1

我注意到std::unordered_mapinsert函數返回std::pair何時將std :: unordered_map :: insert失敗?

std::pair的第二個元素顯示值是否真的插入。但是,我對此感到困惑。通過哈希映射實現的std::unordered_map可以在插入時失敗嗎?什麼時候會發生?

這裏是在cppreference的描述:

返回值
1-2)返回一對由一個迭代的所插入的元件(或該防止插入的元件)和布爾表示插入是否發生。

+0

您只能在unordered_map,unordered_set,map或set中放置唯一的鍵。如果該鍵已經存在,則第二個參數將被設置爲false,並且新插入將被拒絕。 – arturx64

+0

答案在您引用的同一頁面上拼寫出來。 -1 –

+0

我調整了你的問題的英文。對於母語人士來說,這已經是完全可以理解的,但可能不是來自不同背景的另一個非母語人士。如果您不瞭解我使用的措辭,請再次編輯它(或僅恢復)。 –

回答

6

在同一頁面鏈接到您:

插入元素(或多個)放入容器內,如果容器尚未包含具有等效鍵的元素。

(我的重點)

換句話說,該boolfalse如果鍵已經存在於地圖上。

請注意,其他故障(如分配失敗)將由異常報告(並且容器將保持不變)。