1、unordered系列的關聯式容器
(1)unordered_map是儲存鍵值對的關聯式容器,其允許通過key快速的索引到與其對應的value。(2)在unordered_map中,鍵值通常用於唯一地標識元素,而對映值是乙個物件,其內容與此鍵關聯。鍵和對映值的型別可能不同。
(3)在內部,unordered_map沒有對按照任何特定的順序排序,為了能在常數範圍內找到key所對應的value,unordered_map將相同雜湊值的鍵值對放在相同的桶中。
(4)unordered_map容器通過key訪問單個元素要比map快,但它通常在遍歷元素子集的範圍迭代方面效率較低。
(5)unordered_maps實現了直接訪問操作符(operator),它允許使用key作為引數直接訪問value。
(6)它的迭代器至少是前向迭代器。
#include
#include
#include
using
namespace std;
intmain()
cout
int i =
0; i < um.
bucket_count()
;++i)
return0;
}
#include
#include
#include
using
namespace std;
intmain()
for(
int i =
0; i < umm.
bucket_count()
;++i)
return0;
}
(1)unordered_set是不按特定順序儲存唯一元素的容器,允許根據元素的值快速檢索單個元素。(2)在unordered_set中,元素的值同時是其唯一標識元素的鍵。鍵是不可變的,因此,unordered_set中的元素不能在容器中修改一次,但是可以插入和刪除它們。
(3)在內部,unordered_set中的元素不按任何特定順序排序,而是根據它們的雜湊值組織成桶,以允許直接由它們的值快速訪問單個元素(平均平均時間複雜度恆定)。
(4)unordered_set容器比set容器通過其鍵訪問單個元素的速度快,儘管它們在通過其元素子集進行範圍迭代時通常效率較低。
(5)容器中的迭代器至少是正向迭代器。
#include
#include
#include
using
namespace std;
intmain()
for(
int i =
0; i < us.
bucket_count()
;++i)
cout
int> usi;
usi.
insert(2
);usi.
insert(4
);usi.
insert(2
);usi.
insert(3
);usi.
insert(2
);usi.
insert(1
);for(
auto
& e : usi)
for(
int i =
0; i < usi.
bucket_count()
;++i)
return0;
}
#include
#include
#include
using
namespace std;
intmain()
for(
int i =
0; i < ums.
bucket_count()
;++i)
return0;
}
2、應用
在大小為 2n 的陣列 a 中有 n+1 個不同的元素,其中有乙個元素重複了 n 次。返回重複了 n 次的那個元素。
#include
#include
#include
using
namespace std;
class
solution
for(
auto
& e : a)}}
};intmain()
; cout
(a)
}
給定兩個陣列,編寫乙個函式來計算它們的交集。
#include
#include
#include
using
namespace std;
class
solution
unordered_set<
int> us2;
for(
auto
& e : v2)
for(
auto
& e : us1)
}return ret;}}
;int
main()
; vector<
int> v2
; vector<
int> res = sol.
intersection
(v1, v2)
;for
(auto
& e : res)
return0;
}
給定乙個整數陣列,判斷是否存在重複元素。
#include
#include
#include
using
namespace std;
class
solution
for(
int i =
0; i < us.
bucket_count()
;++i)
}return
false;}
};intmain()
; vector<
int> v2
; cout
(v1)
(v2)
}
給定兩個句子 a 和 b 。 (句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。)如果乙個單詞在其中乙個句子中只出現一次,在另乙個句子中卻沒有出現,那麼這個單詞就是不常見的。
#include
#include
#include
#include
using
namespace std;
class
solution
for(
auto
& e : vb)
for(
auto
& e : umsa)
}for
(auto
& e : umsb)
}return ret;
}private
: vector
splitstringtowords
(string str)
else}}
return ret;}}
;int
main()
return0;
}
STL系列 關聯容器的操作
在c 中定義了幾種型別用來表示容器關鍵字和值的型別。對於set,由於儲存的值就是關鍵字,所以,key type和value type是一樣的。set的迭代器是const的!對於set,find呼叫返回的是乙個迭代器,如果我們所給定的關鍵字在set中的時候,迭代器就指向該關鍵字,否則,find返回尾後...
undordered系列關聯式容器
unordered系列容器是c 11中,新增加的4個關聯式容器,這四個關聯式容器與紅黑樹結構的關聯式容器使用方式基本相同,只是在底層實現的結構不同。unordered map 1.unordered map是儲存鍵值對的關聯式容器,其允許通過key快速的索引到對應的value。2.在unordere...
STL系列 7 關聯容器特點
set,multiset,map,multimap 是一種非線性的樹結構,具體的說採用的是一種比較高效的特殊的平衡檢索二叉樹 紅黑樹結構。因為關聯容器的這四種容器類都使用同一原理,所以他們核心的演算法是一致的,但是它們在應用上又有一些差別,先描述一下它們之間的差別。set 又稱集合,實際上就是一組元...