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,其元素數量與firstlast.

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() 範圍建構函式

構造一個無序多對映,其元素數量與範圍內的元素數量相同。firstlast.

5 unordered_multimap::unordered_multimap() 初始化列表建構函式

從初始化列表構造一個無序多對映。

解構函式

序號 方法 & 描述
1 unordered_multimap::~unordered_multimap()

透過釋放其記憶體來銷燬無序多對映物件。

成員函式

序號 方法 & 描述
1 unordered_multimap::begin() 容器迭代器

返回一個迭代器,該迭代器引用無序多對映的第一個元素。

2 unordered_multimap::begin() 桶迭代器

返回一個指向其一個桶中的第一個元素的迭代器。

3 unordered_multimap::bucket()

返回元素位於其中的桶號k位於。

4 unordered_multimap::bucket_count()

返回無序多對映容器中存在的桶數量。

5 unordered_multimap::bucket_size()

返回第 n 個桶中存在的元素數量。

6 unordered_multimap::cbegin() 容器迭代器

返回一個常量迭代器,該迭代器引用無序多對映的第一個元素。

7 unordered_multimap::cbegin() 桶迭代器

返回一個指向其一個桶中的第一個元素的常量迭代器。

8 unordered_multimap::cend() 容器迭代器

返回一個指向超出末尾無序多對映的元素。

9 unordered_multimap::cend() 桶迭代器

返回一個指向超出末尾其一個桶中的元素。

10 unordered_multimap::clear()

透過刪除所有元素並設定無序多對映的大小為.

11 unordered_multimap::count()

返回與鍵關聯的對映值的個數k.

12 unordered_multimap::emplace()

透過插入新元素來擴充套件容器。

13 unordered_multimap::emplace_hint()

使用提示作為元素的位置,在無序多對映中插入一個新元素。

14 unordered_multimap::empty()

測試無序多對映是否為空。

15 unordered_multimap::end() 容器迭代器

返回一個指向超出末尾無序多對映中的元素。

16 unordered_multimap::end() 桶迭代器

返回一個指向超出末尾其一個桶中的元素。

17 unordered_multimap::equal_range()

返回與特定鍵匹配的元素範圍。

18 unordered_multimap::erase() 位置版本

位置.

19 unordered_multimap::erase() 鍵版本

刪除與鍵關聯的對映值k.

20 unordered_multimap::erase() 範圍版本

從無序多對映中刪除元素範圍。

21 unordered_multimap::find()

查詢與鍵關聯的元素k.

22 unordered_multimap::get_allocator()

返回與無序多對映關聯的分配器。

23 unordered_multimap::hash_function()

計算無序多對映容器使用的雜湊函式物件。

24 unordered_multimap::insert() 值版本

透過在無序多對映中插入新元素來擴充套件容器。

25 unordered_multimap::insert() 移動版本

透過插入新元素來擴充套件無序多對映。

26 unordered_multimap::insert() 提示版本

透過在無序多對映中插入新元素來擴充套件容器。

27 unordered_multimap::insert() 提示移動版本

透過使用移動語義在無序多對映中插入新元素來擴充套件容器。

28 unordered_multimap::insert() 範圍版本

透過在無序多對映中插入新元素來擴充套件容器。

29 unordered_multimap::insert() 初始化列表版本

透過從初始化列表插入新元素來擴充套件無序多對映。

30 unordered_multimap::key_eq()

返回用於比較鍵是否相等的函式。

31 unordered_multimap::load_factor()

返回無序多對映容器的當前負載因子。

32 unordered_multimap::max_bucket_count()

返回無序多對映容器可以具有的最大桶數。

33 unordered_multimap::max_load_factor() 獲取版本

返回無序多對映容器的當前最大負載因子。

34 unordered_multimap::max_load_factor() 設定版本

為無序多對映容器分配新的負載因子。

35 unordered_multimap::max_size()

返回無序多對映可以容納的最大元素數。

36 unordered_multimap::operator=() 複製版本

透過替換舊內容為無序多對映分配新內容,並在必要時修改大小。

37 unordered_multimap::operator=() 移動版本

將一個無序多對映的內容移動到另一個無序多對映中,並在必要時修改大小。

38 unordered_multimap::operator=() 初始化列表版本

將初始化列表中的元素複製到無序多對映中。

39 unordered_multimap::rehash()

將容器中的桶數量設定為n或更多。

40 unordered_multimap::reserve()

將容器中的桶數量設定為最適合容納至少n個元素的數量。

41 unordered_multimap::size()

返回無序多對映中存在的元素數量。

42 unordered_multimap::swap()

交換第一個無序多對映與另一個無序多對映的內容。

非成員過載函式

序號 方法 & 描述
1 unordered_multimap::operator==()

測試兩個無序多對映是否相等。

2 unordered_multimap::operator!=()

測試兩個無序多對映是否相等。

3 unordered_multimap::swap()

交換第一個無序多對映與另一個無序多對映的內容。

廣告