STL之關聯容器

2021-09-26 03:47:07 字數 2370 閱讀 9313

1.set單重集合:不允許key重複

set作為乙個容器,也是用來儲存同一資料型別的資料型別,並且能從乙個資料集合中取出資料;c++ stl中標準關聯容器set, multiset, map,multimap內部採用的就是一種非常高效的平衡檢索二叉樹:紅黑樹

#include using namespace std;

#include templatevoid show(container &con)

std::cout//show(myset);

//預設排序後輸出

for (auto it = myset.cbegin(); it != myset.cend(); it++)

cout << endl;

//查詢

std::set::iterator fit1=myset.find(12); //二分查詢

std::set::iterator fit2=std::find(myset.begin(),myset.end(),12); //順序遍歷

std::set::iterator it1=myset.lower_bound(112);//返回第乙個大於等於key_value的定位器

std::set::iterator it2=myset.upper_bound(112);//返回最後乙個大於等於key_value的定位器

//插入

myset.insert(112);

myset.insert(fit1,12); //單重集合不允許鍵重複,雖然顯示插入成功,但是集合還是只有乙個12

int count=myset.count(12);

std::cout《結果: 

1 12 33 534 45657 86576754

11 12 33 112 534 45657 86576754

1 12 33 534 45657 86576754

12 33 534 45657 86576754

請按任意鍵繼續. . .

2.multiset多重集合:允許key重複

3.map:單重對映:自動排序、插入/刪除效率高、查詢效率高

它提供一對一(其中第乙個可以稱為關鍵字,每個關鍵字只能在map**現一次,第二個稱為該關鍵字的值)的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。

#include using namespace std;

#include#include templatevoid show(container &con)

std::coutstd::mapmymap;

std::pairp1(12,43);

std::pairp2(152,43);

//插入資料:三種方法;前兩種無區別,第三種陣列插入方式的不同點在於:鍵值相同的會被後來插入的覆蓋,而insert此時是插入不了

mymap.insert(p1); //插入之後還會按照鍵值大小排序

mymap.insert(p2);

mymap.insert(std::pair(1,2));

mymap.insert(std::pair(1,3)); //插入失敗,鍵值不能重複;

mymap.insert(std::pair(13,2));

//判斷是否插入成功:通過pair的第二個變數來知道是否插入成功,它的第乙個變數返回的是乙個map的迭代器,如果插入成功的話insert_pair.second應該是true的,否則為false。

mymap[152]=456;

mymap[52]=756;

mymap[4]=56;

mymap[5]=56;

//輸出map中的成員

std::map::iterator it=mymap.begin();

while(it!=mymap.end())

{ std::cout<<"@ ";

coutif(iter!=mymap.end())

{ std::cout<<"@ ""@   1 2

@   4 56

@   5 56

@   12 43

@   13 2

@   52 756

@   152 456

@   13--->2

請按任意鍵繼續. . .

hash_map和map的區別:

什麼時候需要用hash_map,什麼時候需要用map

4.multimap:多重對映

它提供一對多(其中第乙個可以稱為關鍵字,每個關鍵字只能在map**現多次,第二個稱為該關鍵字的值)的資料處理能力

STL之關聯容器

關聯容器包含map set multimap multiset。關聯容器的特點是明顯的,相對於順序容器,有如下特點 1 其內部是採用非線性的二叉樹結構,具體的說是紅黑樹的結構原理實現的。2 set和map保證了元素的唯一性,multiset和multimap擴充套件了這一屬性,可以允許元素不唯一。3...

STL之關聯式容器

sets 沒有重疊的數字,沒有權利指定新元素的位置 set typedef std set obj obj col col.insert 3 col.insert 1 col.insert 5 col.insert 4 col.insert 1 col.insert 6 col.insert 2 f...

STL關聯容器之map

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