簡體   English   中英

std :: unordered_map的以下命令之間是否有任何區別

[英]Is there any difference between the following commands from std::unordered_map

要將鍵值對插入到無序映射中,例如std::unordered_pair<int,int> map1 ,我們可以通過以下兩種方式中的任何一種來實現:

map1[2]=5;
map1.insert({2,5});

使用std_unordered_insertoperator[]之間有什么區別嗎?

如果要查找給定鍵的映射值,可以使用以下兩種方法之一:

mappedVal = map1.at(2);
mappedVal = map1[2];

同樣,使用std::unordered_map::atoperator[]之間有什么區別?

MAP1 [2] = 5;

如果存在帶有鍵2的條目,則將該條目的值設置為5 否則,使用鍵2和值5創建一個新條目。


map1.insert({2,5-});

如果不存在具有鍵2條目,則創建一個具有鍵2和值5的新條目。 否則, 什么都不做


mappingVal = map1.at(2);

如果存在鍵為2的條目, mappedVal其值分配給mappedVal 否則,拋出out_of_range異常。


appedVal = map1 [2];

如果存在具有鍵2的條目,則將其值分配給mappingVal。 否則,使用默認值為2創建一個條目,並將該默認值分配給mappingVal。


對於查找,我通常使用unordered_map::find()而不是at()operator [] () (除非我知道給定鍵有一個條目)。

operator[] ,如果鍵不存在,則at()將拋出std::out_of_range異常。 operator[]將代替創建密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM