
- C 標準庫
- C 標準庫
- C++ 標準庫
- C++ 庫 - 首頁
- C++ 庫 - <fstream>
- C++ 庫 - <iomanip>
- C++ 庫 - <ios>
- C++ 庫 - <iosfwd>
- C++ 庫 - <iostream>
- C++ 庫 - <istream>
- C++ 庫 - <ostream>
- C++ 庫 - <sstream>
- C++ 庫 - <streambuf>
- C++ 庫 - <atomic>
- C++ 庫 - <complex>
- C++ 庫 - <exception>
- C++ 庫 - <functional>
- C++ 庫 - <limits>
- C++ 庫 - <locale>
- C++ 庫 - <memory>
- C++ 庫 - <new>
- C++ 庫 - <numeric>
- C++ 庫 - <regex>
- C++ 庫 - <stdexcept>
- C++ 庫 - <string>
- C++ 庫 - <thread>
- C++ 庫 - <tuple>
- C++ 庫 - <typeinfo>
- C++ 庫 - <utility>
- C++ 庫 - <valarray>
- C++ STL 庫
- C++ 庫 - <array>
- C++ 庫 - <bitset>
- C++ 庫 - <deque>
- C++ 庫 - <forward_list>
- C++ 庫 - <list>
- C++ 庫 - <map>
- C++ 庫 - <multimap>
- C++ 庫 - <queue>
- C++ 庫 - <priority_queue>
- C++ 庫 - <set>
- C++ 庫 - <stack>
- C++ 庫 - <unordered_map>
- C++ 庫 - <unordered_set>
- C++ 庫 - <vector>
- C++ 庫 - <algorithm>
- C++ 庫 - <iterator>
- C++ 高階庫
- C++ 庫 - <any>
- C++ 庫 - <barrier>
- C++ 庫 - <bit>
- C++ 庫 - <chrono>
- C++ 庫 - <cinttypes>
- C++ 庫 - <clocale>
- C++ 庫 - <condition_variable>
- C++ 庫 - <coroutine>
- C++ 庫 - <cstdlib>
- C++ 庫 - <cstring>
- C++ 庫 - <cuchar>
- C++ 庫 - <charconv>
- C++ 庫 - <cfenv>
- C++ 庫 - <cmath>
- C++ 庫 - <ccomplex>
- C++ 庫 - <expected>
- C++ 庫 - <format>
- C++ 庫 - <future>
- C++ 庫 - <flat_set>
- C++ 庫 - <flat_map>
- C++ 庫 - <filesystem>
- C++ 庫 - <generator>
- C++ 庫 - <initializer_list>
- C++ 庫 - <latch>
- C++ 庫 - <memory_resource>
- C++ 庫 - <mutex>
- C++ 庫 - <mdspan>
- C++ 庫 - <optional>
- C++ 庫 - <print>
- C++ 庫 - <ratio>
- C++ 庫 - <scoped_allocator>
- C++ 庫 - <semaphore>
- C++ 庫 - <source_location>
- C++ 庫 - <span>
- C++ 庫 - <spanstream>
- C++ 庫 - <stacktrace>
- C++ 庫 - <stop_token>
- C++ 庫 - <syncstream>
- C++ 庫 - <system_error>
- C++ 庫 - <string_view>
- C++ 庫 - <stdatomic>
- C++ 庫 - <variant>
- C++ STL 庫速查表
- C++ STL - 速查表
- C++ 程式設計資源
- C++ 程式設計教程
- C++ 有用資源
- C++ 討論
C++ 庫 - <unordered_map>
unordered_map 簡介
Unordered map 是一種類似字典的資料結構。它是一系列 (鍵,值) 對的序列,其中每個唯一的鍵只關聯一個值。它通常被稱為關聯陣列。它允許基於鍵快速檢索單個元素。它還實現了直接訪問運算子(下標運算子 []),它允許使用鍵值作為引數直接訪問對映值。
Unordered map 不會根據鍵或對映值以任何特定順序排序其元素,而是根據其雜湊值組織到桶中,以允許透過鍵值直接快速訪問單個元素。
在透過鍵訪問單個元素時,unordered map 的效能優於 map。但對於範圍迭代,它們的效能相當低。
定義
以下是來自 <unordered_map> 標頭檔案的 std::unordered_map 的定義
template < class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Alloc = allocator< pair<const Key,T> > > class unordered_map;
引數
Key - 鍵的型別。
T - 對映值的型別。
Hash - 一元函式物件型別,它接受型別為key型別的物件作為引數,並返回基於它的型別為size_t的唯一值。
Pred - 二元謂詞,它接受兩個key 型別的引數並返回一個布林值。
Alloc - 分配器物件的型別。
T 可以替換為任何其他資料型別,包括使用者定義的型別。
成員型別
以下成員型別可以用作成員函式的引數或返回值型別。
序號 | 成員型別 | 定義 |
---|---|---|
1 | key_type | Key(模板的第一個引數) |
2 | mapped_type | T(模板的第二個引數) |
3 | value_type | pair<const key_type,mapped_type> |
4 | hasher | 第三個模板引數(預設為:hash<key_type>) |
5 | key_equal | 第四個模板引數(預設為:equal_to<key_type>) |
6 | allocator_type | Alloc(模板的第五個引數) |
7 | reference | value_type& |
8 | const_reference | const value_type& |
9 | pointer | allocator_traits<Alloc>::pointer |
10 | const_pointer | allocator_traits<Alloc>::const_pointer |
11 | iterator | 指向 value_type 的前向迭代器value_type |
12 | const_iterator | 指向 const value_type 的前向迭代器value_type |
13 | local_iterator | 指向 value_type 的前向迭代器 |
14 | const_local_iterator | 指向 const value_type 的前向迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
來自 <unordered_map> 的函式
以下是 <unordered_map> 標頭檔案中的所有方法列表。
建構函式
序號 | 方法 & 描述 |
---|---|
1 | unordered_map::unordered_map 預設建構函式 構造一個空的 unordered_map,其中包含零個元素。 |
2 | unordered_map::unordered_map 複製建構函式 構造一個 unordered_map,其中包含現有 unordered_map 中每個元素的副本。 |
3 | unordered_map::unordered_map 移動建構函式 使用移動語義構造一個包含 other 內容的 unordered_map。 |
4 | unordered_map::unordered_map 範圍建構函式 構造一個 unordered_map,其元素數量與first到last. |
5 | unordered_map::unordered_map 初始化列表建構函式 從初始化列表構造一個 unordered_map。 |
解構函式
序號 | 方法 & 描述 |
---|---|
1 | unordered_map::~unordered_map
透過釋放其記憶體來銷燬 unordered_map 物件。 |
成員函式
序號 | 方法 & 描述 |
---|---|
1 | unordered_map::at
返回與鍵k. |
2 | unordered_map::begin 容器迭代器 返回一個指向對映第一個元素的迭代器。 |
3 | unordered_map::begin 桶迭代器 返回一個指向其一個桶中的第一個元素的迭代器。 |
4 | unordered_map::bucket
返回元素位於其中的桶號k位於。 |
5 | unordered_map::bucket_count
返回 unordered_map 容器中桶的數量。 |
6 | unordered_map::bucket_size
返回第 n 個桶中存在的元素數量。 |
7 | unordered_map::cbegin 容器迭代器 返回一個指向 unordered_map 第一個元素的常量迭代器。 |
8 | unordered_map::cbegin 桶迭代器 返回一個指向其一個桶中的第一個元素的常量迭代器。 |
9 | unordered_map::cend 容器迭代器 返回一個指向超出末尾unordered_map 的元素。 |
10 | unordered_map::cend 桶迭代器 返回一個指向超出末尾其一個桶中的元素。 |
11 | unordered_map::clear
透過刪除所有元素並設定 unordered_map 的大小為零. |
12 | unordered_map::count
返回與鍵關聯的對映值的個數k. |
13 | unordered_map::emplace
透過插入新元素來擴充套件容器。 |
14 | unordered_map::emplace_hint
使用提示作為元素的位置在 unordered_map 中插入一個新元素。 |
15 | unordered_map::empty
測試 unordered_map 是否為空。 |
16 | unordered_map::end 容器迭代器 返回一個指向超出末尾unordered_map 中的元素。 |
17 | unordered_map::end 桶迭代器 返回一個指向超出末尾其一個桶中的元素。 |
18 | unordered_map::equal
返回與特定鍵匹配的元素範圍。 |
19 | unordered_map::erase 位置版本 從位置. |
20 | unordered_map::erase 鍵版本 刪除與鍵關聯的對映值k. |
21 | unordered_map::erase 範圍版本 從 unordered_map 中刪除元素範圍。 |
22 | unordered_map::find
查詢與鍵關聯的元素k. |
23 | unordered_map::get_allocator
返回與 unordered_map 關聯的分配器。 |
24 | unordered_map::hash_function
計算 unordered_map 容器使用的雜湊函式物件。 |
25 | unordered_map::insert
透過在 unordered_map 中插入新元素來擴充套件容器。 |
26 | unordered_map::insert 移動版本 透過在 unordered_map 中插入新元素來擴充套件容器。 |
27 | unordered_map::insert 提示版本 透過在 unordered_map 中插入新元素來擴充套件容器。 |
28 | unordered_map::insert 移動和提示版本 透過插入新元素來擴充套件 unordered_map。 |
29 | unordered_map::insert 範圍版本 透過在 unordered_map 中插入新元素來擴充套件容器。 |
30 | unordered_map::insert 初始化列表版本 透過從初始化列表插入新元素來擴充套件對映。 |
31 | unordered_map::key_eq
返回用於比較鍵是否相等的函式。 |
32 | unordered_map::load_factor
返回 unordered_map 容器的當前負載因子。 |
33 | unordered_map::max_bucket_count
返回 unordered_map 容器可以具有的最大桶數。 |
34 | unordered_map::max_load_factor 獲取版本 返回 unordered_map 容器的當前最大負載因子。 |
35 | unordered_map::max_load_factor 設定版本 為 unordered_map 容器分配新的負載因子。 |
36 | unordered_map::max_size
返回 unordered_map 可以容納的最大元素數。 |
37 | unordered_map::operator= 複製版本 透過替換舊內容為 unordered_map 分配新內容,並在必要時修改大小。 |
38 | unordered_map::operator= 移動版本 將一個 unordered_map 的內容移動到另一個,並在必要時修改大小。 |
39 | unordered_map::operator= 初始化列表版本 將初始化列表中的元素複製到無序對映中。 |
40 | unordered_map::operator[]
如果鍵k與容器中的元素匹配,則方法返回對該元素的引用。 |
41 | unordered_map::operator[] 移動版本 如果鍵k與容器中的元素匹配,則方法返回對該元素的引用。 |
42 | unordered_map::rehash
將容器中的桶數量設定為n或更多。 |
43 | unordered_map::reserve
將容器中的桶數量設定為最適合容納至少n個元素的數量。 |
44 | unordered_map::size
返回無序對映中存在的元素數量。 |
45 | unordered_map::swap
交換第一個無序對映與另一個無序對映的內容。 |
非成員過載函式
序號 | 方法 & 描述 |
---|---|
1 | unordered_map::operator==
測試兩個無序對映是否相等。 |
2 | unordered_map::operator!=
測試兩個無序對映是否相等。 |
3 | unordered_map::swap
交換第一個無序對映與另一個無序對映的內容。 |
無序多對映簡介
無序多對映是一種類似字典的資料結構。它是一系列 (鍵,值) 對的序列,其中不同的元素可以具有等效的鍵。具有等效鍵的元素組合在同一個桶中,並且以equal_range 迭代器可以遍歷所有這些元素的方式。
無序多對映不會根據其鍵或對映值按任何特定順序排序其元素,而是根據其雜湊值組織到桶中,以便能夠透過其鍵值直接快速訪問各個元素。
定義
以下是來自 <unordered_map> 標頭檔案的 std::unordered_multimap 的定義
template < class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Alloc = allocator< pair<const Key,T> > > class unordered_multimap;
引數
Key - 鍵的型別。
T - 對映值的型別。
Hash - 一元函式物件型別,它接受型別為key型別的物件作為引數,並返回基於它的型別為size_t的唯一值。
Pred - 二元謂詞,它接受兩個key 型別的引數並返回一個布林值。
Alloc - 分配器物件的型別。
T 可以替換為任何其他資料型別,包括使用者定義的型別。
成員型別
以下成員型別可以用作成員函式的引數或返回值型別。
序號 | 成員型別 | 定義 |
---|---|---|
1 | key_type | Key(模板的第一個引數) |
2 | mapped_type | T(模板的第二個引數) |
3 | value_type | pair<const key_type,mapped_type> |
4 | hasher | 第三個模板引數(預設為:hash<key_type>) |
5 | key_equal | 第四個模板引數(預設為:equal_to<key_type>) |
6 | allocator_type | Alloc(模板的第五個引數) |
7 | reference | value_type& |
8 | const_reference | const value_type& |
9 | pointer | allocator_traits<Alloc>::pointer |
10 | const_pointer | allocator_traits<Alloc>::const_pointer |
11 | iterator | 指向 value_type 的前向迭代器value_type |
12 | const_iterator | 指向 const value_type 的前向迭代器value_type |
13 | local_iterator | 指向 value_type 的前向迭代器 |
14 | const_local_iterator | 指向 const value_type 的前向迭代器 |
15 | difference_type | ptrdiff_t |
16 | size_type | size_t |
來自 <unordered_multimap> 的函式
以下是 <unordered_map> 標頭檔案中的所有方法列表。
建構函式
序號 | 方法 & 描述 |
---|---|
1 | unordered_multimap::unordered_multimap() 預設建構函式 構造一個空且元素數量為零的無序多對映。 |
2 | unordered_multimap::unordered_multimap() 複製建構函式 構造一個無序多對映,其中包含現有無序多對映中每個元素的副本。 |
3 | unordered_multimap::unordered_multimap() 移動建構函式 使用移動語義構造一個包含其他內容的無序多對映。 |
4 | unordered_multimap::unordered_multimap() 範圍建構函式 構造一個無序多對映,其元素數量與範圍內的元素數量相同。first到last. |
5 | unordered_multimap::unordered_multimap() 初始化列表建構函式 從初始化列表構造一個無序多對映。 |
解構函式
序號 | 方法 & 描述 |
---|---|
1 | unordered_multimap::~unordered_multimap()
透過釋放其記憶體來銷燬無序多對映物件。 |
成員函式
非成員過載函式
序號 | 方法 & 描述 |
---|---|
1 | unordered_multimap::operator==()
測試兩個無序多對映是否相等。 |
2 | unordered_multimap::operator!=()
測試兩個無序多對映是否相等。 |
3 | unordered_multimap::swap()
交換第一個無序多對映與另一個無序多對映的內容。 |