首頁 >後端開發 >C#.Net教程 >C++_STL常用容器總結:對群組pair中關聯容器與順序容器

C++_STL常用容器總結:對群組pair中關聯容器與順序容器

php是最好的语言
php是最好的语言原創
2018-07-28 11:31:122402瀏覽

對群組pair

在這部分,我們先介紹一下對群組pair中關聯容器與順序容器的公共操作,之後再介紹常用的幾個具體的關聯容器。

1、關聯容器

關聯容器是儲存物件集合的類型,支援通過鍵的高效查詢。關聯容器的大部分行為與順序容器相同,二者的本質差異在於關聯容器透過鍵儲存和讀取元素,而順序容器是透過元素在容器中的位置順序儲存和存取元素。 
關聯容器的每個元素包含一個鍵值(key)和一個實值(value)。當元素插入關聯容器時,容器內部資料結構便依照其鍵值大小,以某種特定規則將此元素放置於適當位置。關聯容器沒有所謂的頭尾,只有最大元素和最小元素,關聯容器不提供front、push_front、pop_front、back、push_back、以及pop_back操作。 
標準的STL關聯容器分為set(集合)和map(映射)兩大類,以及這兩大類的衍生體multiset(多鍵集合)和multimap(多鍵映射表)。這些容器的底層機制均以RB-tree完成(紅黑樹)。

2、關聯容器與順序容器的公共操作

1、關聯容器與順序容器共享的建構子

關聯容器共享大部分順序容器的操作,但不是全部,關聯容器可以使用以下三個建構函式:

C<T> c;
  • 1

#建立一個名為c 的空容器。 C 是容器型別名,如 vector,T 是元素類型,如 int 或 string。適用於所有容器。

C<T> c(c2);
  • 1

建立容器 c2 的副本 c;c 和 c2 必須具有相同的容器類型,並存放相同類型的元素。適用於所有容器。

C<T> c(b, e);
  • 1

建立 c,其元素是迭代器 b 和 e 標示的範圍內元素的副本。適用於所有容器。

2、關聯容器與順序容器共享的其他函數

  1. 關聯容器不能透過容器的大小來定義,因為這樣的話就無法知道鍵所對應的值是什麼了。

  2. 關聯容器支援順序容器的一些關聯運算子。

  3. 關聯容器支援begin、end、rbegin、rend操作。

  4. 關聯容器支援swap和賦值運算,但不提供assign函數。

  5. 關聯容器支援clear和erase函數,但關聯容器的erase運算傳回的是void類型。

  6. 關聯容器支援size()、max_size()、empty()函數作為容器大小的運算,但不支援resize()函數。

3、對群組pair型別提供的運算

對群組pair包含兩個資料值。具體的使用方法如下:

pair<T1, T2> p1;
  • 1

#建立一個空的pair對象,它的兩個元素分別是T1和T2類型,採用值初始化。

pair<T1, T2> p1(v1, v2);
  • 1

建立一個pair對象,它的兩個元素分別是T1和T2型,其中first成員初始化為v1, second成員初始化為v2。

make_pair(v1, v2);
  • 1

以v1和v2值建立一個新的pair對象,其元素的型別分別是v1和v2的型別。

p1 < p2;
  • 1

兩個pair物件之間的小於運算,其定義遵循字典順序:如果p1.first2a5f44c9ad1503f4ebef47d9ad8180c1 物件名稱;

如果使用多個相同的pair對象,也可以使用typedef簡化其宣告:

typedef  pair <string, string>  Author;
Author 对象名(初始值1,初始值2);
  • 1

  • ## 2

對於pair類別可以直接存取其資料成員,其成員都是公有的,分別命名為first成員和second成員,使用點運算子即可存取。

相關文章:

c  STL標準容器之Iterator使用

c 複習要點總結z之十二-STL string

相關影片:

C# 教學

以上是C++_STL常用容器總結:對群組pair中關聯容器與順序容器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn