C++ 庫 - <map>



map 簡介

Map 是一種類似字典的資料結構。它是一系列 (鍵, 值) 對的序列,其中每個唯一的鍵只關聯一個值。它通常被稱為關聯陣列.

在 map 中,鍵值通常用於對元素進行排序。對於 map,鍵和值的型別可以不同,表示為

typedef pair<const Key, T> value_type;

Map 通常以二叉搜尋樹的形式實現。

零大小的 map 也是有效的。在這種情況下,map.begin() 和 map.end() 指向相同的位置。

定義

以下是來自 <map> 標頭檔案的 std::map 的定義

template < class Key,
           class T,
           class Compare = less<Key>,
           class Alloc = allocator<pair<const Key,T> >
           > class map;

引數

  • Key - 鍵的型別。

  • T - 對映值的型別。

  • Compare - 一個二元謂詞,它接受兩個元素鍵作為引數並返回一個布林值。

  • Alloc - 分配器物件的型別。

T 可以替換為任何其他資料型別,包括使用者定義的型別。

成員型別

以下成員型別可以用作成員函式的引數或返回值型別。

序號 成員型別 定義
1 key_type Key(模板的第一個引數)
2 mapped_type T(模板的第二個引數)
3 key_compare Compare(模板的第三個引數)
4 allocator_type Alloc(模板的第四個引數)
5 value_type pair<const key_type,mapped_type>
6 value_compare 巢狀函式類,用於比較元素
7 reference allocator_type::reference
8 const_reference allocator_type::const_reference
9 pointer allocator_type::pointer
10 const_pointer allocator_type::const_pointer
11 iterator 雙向迭代器到value_type
12 const_iterator 雙向迭代器到常量value_type
13 reverse_iterator 反向迭代器
14 const_reverse_iterator 常量反向迭代器
15 difference_type ptrdiff_t
16 size_type size_t

來自 <map> 的函式

以下是來自 <map> 標頭檔案的所有方法列表。

建構函式

序號 方法 & 描述
1 map::map 預設建構函式

構造一個包含零個元素的空 map。

2 map::map 範圍建構函式

構造一個 map,其元素數量與firstlast.

3 map::map 複製建構函式

構造一個 map,其中包含現有 map 中每個元素的副本。

4 map::map 移動建構函式

使用移動語義構造一個包含其他內容的 map。

5 map::map 初始化列表建構函式

從初始化列表構造一個 map。

解構函式

序號 方法 & 描述
1 map::~map

透過釋放其記憶體來銷燬 map 物件。

成員函式

序號 方法 & 描述
1 map::at

返回與鍵關聯的對映值的引用k.

2 map::begin

返回一個迭代器,該迭代器引用 map 的第一個元素。

3 map::cbegin

返回一個常量迭代器,該迭代器引用 map 的第一個元素。

4 map::cend

返回一個指向超出末尾map 的元素。

5 map::clear

透過刪除所有元素並將其大小設定為零來銷燬 map。

6 map::count

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

7 map::crbegin

返回一個常量反向迭代器,該迭代器指向容器 i 的最後一個元素。

8 map::crend

返回一個常量反向迭代器,該迭代器指向容器 i 中第一個元素之前的理論元素。

9 map::emplace

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

10 map::emplace_hint 提示版本

使用提示作為元素的位置在 map 中插入一個新元素。

11 map::empty

測試 map 是否為空。

12 map::end

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

13 map::equal_range

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

14 map::erase 位置版本

position.

15 map::erase 位置版本

position.

16 map::erase key

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

17 map::erase 範圍版本

從 map 中刪除元素範圍。

18 map::erase 範圍版本

從 map 中刪除元素範圍。

19 map::find

查詢與鍵關聯的元素k.

20 map::get_allocator

返回與 map 關聯的分配器。

21 map::insert 單個元素

透過在 map 中插入新元素擴充套件容器。

22 map::insert 提示版本

透過在 map 中插入新元素擴充套件容器。

23 map::insert 範圍版本

透過在 map 中插入新元素擴充套件容器。

24 map::insert 移動提示版本

透過插入新元素擴充套件 map。

25 map::insert 初始化列表版本

從初始化列表擴充套件 map,插入新元素。

26 map::key_comp

返回一個比較鍵的函式物件,它是此容器的建構函式引數的副本comp.

27 map::lower_bound

返回一個指向第一個不小於鍵的元素的迭代器k.

28 map::max_size

返回 map 可以容納的最大元素數。

29 map::operator= 複製版本

透過替換舊內容為 map 分配新內容,並在必要時修改大小。

30 map::operator= 移動版本

將一個 map 的內容移動到另一個 map 中,並在必要時修改大小。

31 map::operator= 初始化列表版本

將初始化列表中的元素複製到 map 中。

32 map::operator[] 複製版本

如果鍵k與容器中的元素匹配,則方法返回對該元素的引用。

33 map::operator[] 移動版本

如果鍵k與容器中的元素匹配,則方法返回對該元素的引用。

34 map::rbegin

返回一個指向 map 的最後一個元素的反向迭代器。

35 map::rend

返回一個指向 map 的反向末尾的反向迭代器 i。

36 map::size

返回 map 中存在的元素數。

37 map::swap

將 map 的內容與 map x 的內容交換。

38 map::upper_bound

返回一個指向第一個大於鍵的元素的迭代器k.

39 map::value_comp

返回一個比較型別物件的函式物件std::map::value_type.

非成員過載函式

序號 方法 & 描述
1 operator==

測試兩個 map 是否相等。

2 operator!=

測試兩個 map 是否相等。

3 operator<

測試第一個 map 是否小於另一個 map。

4 map::operator<=

測試第一個 map 是否小於或等於另一個 map。

5 operator>

測試第一個 map 是否大於另一個 map。

6 operator>=

測試第一個 map 是否大於或等於另一個 map。

7 swap()

將 map 的內容與 map x 的內容交換。

multimap 簡介

Multimap 是一種類似字典的資料結構。它是一系列(鍵, 值)對,其中多個值可以與等效鍵關聯。它通常被稱為關聯陣列.

在 multimap 中,鍵值通常用於對元素進行排序。對於 multimap,鍵和值的型別可以不同,表示為

typedef pair<const Key, T> value_type;

Multimap 通常以二叉搜尋樹的形式實現。

零大小的 multimap 也是有效的。在這種情況下,multimap.begin() 和 multimap.end() 指向相同的位置。

定義

以下是來自 <multimap> 標頭檔案的 std::multimap 的定義

template < class Key,
           class T,
           class Compare = less<Key>,
           class Alloc = allocator<pair<const Key,T> >
           > class multimap;

引數

  • Key - 鍵的型別。

  • T - 對映值的型別。

  • Compare - 一個二元謂詞,它接受兩個元素鍵作為引數並返回一個布林值。

  • Alloc - 分配器物件的型別。

  • T 可以替換為任何其他資料型別,包括使用者定義的型別。

成員型別

以下成員型別可以用作成員函式的引數或返回值型別。

序號 成員型別 定義
1 key_type Key(模板的第一個引數)
2 mapped_type T(模板的第二個引數)
3 key_compare Compare(模板的第三個引數)
4 allocator_type Alloc(模板的第四個引數)
5 value_type pair<const key_type,mapped_type>
6 value_compare 巢狀函式類,用於比較元素
7 reference allocator_type::reference
8 const_reference allocator_type::const_reference
9 pointer allocator_type::pointer
10 const_pointer allocator_type::const_pointer
11 iterator 雙向迭代器到value_type
12 const_iterator 雙向迭代器到常量value_type
13 reverse_iterator 反向迭代器
14 const_reverse_iterator 常量反向迭代器
15 difference_type ptrdiff_t
16 size_type size_t

來自 <multimap> 的函式

以下是來自 <multimap> 標頭檔案的所有方法列表。

建構函式

序號 方法 & 描述
1 multimap::multimap 預設建構函式

構造一個包含零個元素的空 multimap。

2 multimap::multimap 範圍建構函式

構造一個 multimap,其元素數量與firstlast.

3 multimap::multimap 複製建構函式

構造一個 multimap,其中包含現有 multimap 中每個元素的副本。

4 multimap::multimap 移動建構函式

使用移動語義構造一個包含其他內容的 multimap。

5 multimap::multimap 初始化列表建構函式

從初始化列表構造一個 multimap。

解構函式

序號 方法 & 描述
1 multimap::~multimap

透過釋放其記憶體來銷燬 multimap 物件。

成員函式

序號 方法 & 描述
1 multimap::begin

返回一個迭代器,該迭代器引用 multimap 的第一個元素。

2 multimap::cbegin

返回一個常量迭代器,該迭代器引用 multimap 的第一個元素。

3 multimap::cend

返回一個指向超出末尾multimap 的元素。

4 multimap::clear

透過刪除所有元素並將其大小設定為零來銷燬 multimap。

5 multimap::count

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

6 multimap::crbegin

返回一個常量反向迭代器,該迭代器指向容器的最後一個元素。

7 multimap::crend

返回一個常量反向迭代器,該迭代器指向容器中第一個元素之前的理論元素。

8 multimap::emplace

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

9 multimap::emplace_hint 提示版本

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

10 multimap::empty

測試多重對映是否為空。

11 multimap::end

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

12 multimap::equal_range

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

13 multimap::erase 位置版本

從多重對映中刪除單個元素。position.

14 multimap::erase 位置版本

從多重對映中刪除單個元素。position.

15 multimap::erase key

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

16 multimap::erase 範圍版本

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

17 multimap::erase 範圍版本

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

18 multimap::find

查詢與鍵關聯的元素k.

19 multimap::get_allocator

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

20 multimap::insert 單個元素

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

21 multimap::insert 提示版本

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

22 multimap::insert 範圍版本

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

23 multimap::insert 移動提示版本

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

24 multimap::insert 初始化列表版本

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

25 multimap::key_comp

返回一個比較鍵的函式物件,它是此容器的建構函式引數的副本comp.

26 multimap::lower_bound

返回一個指向第一個不小於鍵的元素的迭代器k.

27 multimap::max_size

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

28 multimap::operator= 複製版本

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

29 multimap::operator= 移動版本

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

30 multimap::operator= 初始化列表版本

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

31 multimap::rbegin

返回一個反向迭代器,該迭代器指向多重對映的最後一個元素。

32 multimap::rend

返回一個反向迭代器,該迭代器指向多重對映的反向末尾。

33 multimap::size

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

34 multimap::swap

交換多重對映的內容與多重對映x的內容。

35 multimap::upper_bound

返回一個指向第一個大於鍵的元素的迭代器k.

36 multimap::value_comp

返回一個比較型別物件的函式物件std::multimap::value_type.

非成員過載函式

序號 方法 & 描述
1 operator==

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

2 operator!=

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

3 operator<

測試第一個多重對映是否小於另一個。

4 multimap::operator<=

測試第一個多重對映是否小於或等於另一個。

5 operator>

測試第一個多重對映是否大於另一個。

6 operator>=

測試第一個多重對映是否大於或等於另一個。

7 swap()

交換多重對映的內容與多重對映x的內容。

廣告