stl提供了四種聯合容器 set,multiset,map,multimap;
set and multiset在標頭檔案
map and multimap在標頭檔案
模板函式都一樣的
set/map中迭代器不能++或--,因為不是連續的序列,是樹。
set:
在set中,值就是關鍵字,集合中不會有多個相同的關鍵字,且始終按從小到大的順序排列
可反轉可排序,關鍵字是唯一的,只能儲存同乙個型別的值
1 #include2 #includemap: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《下標的型別,對應資料的型別》name;
1 #include2 #include3 #include還有這兩個都可以用lowet_bound() (大於等於的第乙個)和upper_bound() (絕對大於的第乙個,雙寫p!) 返回的都是迭代器。4using
namespace
std;
5int
main()
6
寫博中發現乙個細節:迭代器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的記憶體空間,且分配的記憶體空間是...