STL容器學習 關聯容器與map的用法

2021-09-07 12:38:19 字數 1089 閱讀 9129

stl提供了4個關聯容器:set、multiset、map和multimap。這些容器提供了通過keyword高速儲存和訪問資料元素的能力。set和map不同意有反覆keyword,而multiset和multimap同意反覆keyword。關聯容器的幾個共同函式例如以下:

find(key):搜尋容器中具有指定keyword的元素,返回指向此元素的迭代器。

lower_bound(key):搜尋容器中具有指定keyword的第乙個元素。返回指向此元素的迭代器。

upper_bound(key):搜尋容器中具有指定keyword的最後乙個元素,返回指向此元素的迭代器。

count(key):返回容器中具有指定keyword的元素的數目。

map是比較重要的stl容器。本文主要來介紹map的原理和一些常見的使用方法。

1.map實現的原理

map內部自建乙個一顆紅黑樹,一種嚴格意義上的平衡二叉樹,這顆樹具有對資料自己主動排序的功能。所以在map內部全部的資料都是有序的。

2.資料插入

1)用insert函式插入pair資料。

2)用insert函式插入value_type資料。

3)用陣列方式插入資料。

以上三種方法,都能夠實現插入操作,可是還是有差別的。用insert函式進行插入操作時,在資料的插入上涉及到集合的唯一性這個概念,即當map中有key值時。insert操作無法插入資料。可是假設是用陣列方式就不同了,它能夠覆蓋曾經keyword相應的值。能夠用pair來獲得是否插入成功,pair::iterator, bool> insert_pair,執行完insert操作後。通過推斷insert_pair.second值的真假來推斷是否插入成功。

**舉例及分析例如以下:

#include #include #include using namespace std;

int _tmain(int argc, _tchar* ar**)

map::iterator it; //前向迭代器遍歷輸出

cout<<"應用前向迭代器輸出:"

STL關聯容器之map

map和set一樣,也是一種關聯容器,內部也是使用紅黑樹作為底層的實現結構。但是不同的是,map的鍵值和實值可以是不一樣的。map與set的查詢操作本質上是一樣的,沒有特殊的地方。map使用鍵值排列元素的位置,因而也不允許插入相同鍵值的元素,插入演算法返回pair iterator,bool 分別指...

map關聯容器

資料表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值公升序進行輸出。輸入描述 先輸入鍵值對的個數 然後輸入成對的index和value值,以空格隔開 輸出描述 輸出合併後的鍵值對 多行 輸入例子 4 0 10 2 1 23 4 輸出例子 0 3 ...

關聯容器map

map是一種key value關聯的容器,第乙個稱為關鍵字,只能在map中出現一次,第二個稱為關鍵字的值。特點 map是一類關聯式容器。它的特點是增加和刪除節點對迭代器的影響很小,除了那個操作節點,對其他的節點都沒有什麼影響。對於迭代器來說,可以修改實值,而不能修改key。1 map是 鍵 值 對的...