[英]What is the difference between std::unordered_map and boost::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_insert
或operator[]
之間有什么區別嗎?
如果要查找給定鍵的映射值,可以使用以下兩種方法之一:
mappedVal = map1.at(2);
mappedVal = map1[2];
同樣,使用std::unordered_map::at
或operator[]
之間有什么區別?
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.