c STL 容器 聯合容器

2022-08-15 00:21:26 字數 1150 閱讀 7502

stl提供了四種聯合容器 set,multiset,map,multimap;

set and multiset在標頭檔案

map and multimap在標頭檔案

模板函式都一樣的

set/map中迭代器不能++或--,因為不是連續的序列,是樹。

set:

在set中,值就是關鍵字,集合中不會有多個相同的關鍵字,且始終按從小到大的順序排列

可反轉可排序,關鍵字是唯一的,只能儲存同乙個型別的值

1 #include2 #include

3using

namespace

std;

4void update(set

&s,set

::iterator it,inti)5

11int

main()

1218

set::iterator it;

19int

i;20

if (s.find(2) ==s.end())

21 cout << "

no 2

"<

22else

23 cout << "

yes"

<

24for (i=0,it = s.begin(); it != s.end(); i++)

2529 }

map:

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

宣告乙個map: map《下標的型別,對應資料的型別》name;

1 #include2 #include3 #include

4using

namespace

std;

5int

main()

6

還有這兩個都可以用lowet_bound()  (大於等於的第乙個)和upper_bound()  (絕對大於的第乙個,雙寫p!)  返回的都是迭代器。

寫博中發現乙個細節:迭代器it對應的元素被刪掉了,就不能在it++或it--;

如果

c STL容器之map容器

1.map中所有的元素都是pair 2.pair元素中第乙個元素為key,第二個元素為value 3.所有元素都會根據鍵值自動排序 4.map中不允許有重複的鍵,multimap中允許有重複的鍵 優點 可以根據key快速的找到value 一 建構函式 mapmp map const map mp 二...

c STL容器之deque容器

deque是雙端陣列。deque和vector的區別 deque內部工作原理 deque內部有個中控器,維護每段緩衝區中的內容,緩衝區中存放著真實資料。中控器維護的是每個緩衝區的位址,使得使用每個deque時像一塊連續的記憶體空間。deque容器的迭代器是支援隨機訪問的。一 deque建構函式 de...

C STL容器總結

三大類容器 1.序列式容器 vector deque list vector是一種動態陣列,在記憶體中具有連續的儲存空間,支援快速隨機訪問。由於具有連續的儲存空間,所以在插入和刪除操作方面,效率比較慢。vector有多個建構函式,預設的建構函式是構造乙個初始長度為0的記憶體空間,且分配的記憶體空間是...