STL有7中容器。函數
分別爲:spa
vector 向量 <vector>(頭文件) 隨機訪問容器、順序容器索引
deque 雙端隊列 <deque> 隨機訪問容器、順序容器隊列
list 列表 <list> 可逆容器、順序容器it
set 集合 <set> 可逆容器、關聯容器容器
multiset 多重集合 <set> 可逆容器、關聯容器構造函數
map 映射 <map> 可逆容器、關聯容器map
multimap 多重映射 <map> 可逆容器、關聯容器迭代器
設S表示一種容器類型(如:vector<int>),s一、s2都是S類型的實例,容器都具備以下基本功能:im
S s1 容器的默認構造函數,用於構造一個沒有任何元素的空容器。
s1 op s2 對兩容器之間的元素按字典序進行比較,op表示==、!=、<、<=、>、>=任何一個。
s1.begin() 返回指向s1第一個元素的迭代器。
s1.end() 返回指向s1最後一個元素的下一個位置的迭代器。
s1.empty() 表示s1容器是否爲空,返回一個布爾值。
s1.size() 返回s1容器中元素的個數。
s1.swap(s2) 將s1容器和s2容器的內容交換。
與類型爲S的容器相關聯的迭代器的類型:
S::iterator (與S相關的普通迭代器類型,迭代器指向的元素類型爲T)
S::const_iterator (表示與S相關的常迭代器類型,迭代器指向的元素類型爲const T,經過這樣的迭代器只能讀取元素,不能改寫元素)
按照容器中元素的組織方式,容器可分爲: 「順序容器」(相同類型元素以嚴格線性形式組織) 和 「關聯容器」(可根據一組索引快速提取元素)。
按照與容器所關聯的迭代器類型,又有「可逆容器」這一律念。可逆容器又有「隨機訪問容器」的子概念。
每個可逆容器都有逆向迭代器:
s1.rbegin() 返回指向容器最後一個元素的逆向迭代器。
s1.rend() 返回容器的第一個元素的前一個位置的逆向迭代器。
逆向迭代器的類型:S::reverse_iterator 和 S::const_reverse_iterator
逆向迭代器的「++」運算 被映射爲普通迭代器的「--」,「--」運算 被映射爲普通迭代器的「++」。
一個迭代器和它的逆向迭代器能夠相互轉換。
逆向迭代器類型都有一個構造函數,用來構造一個迭代器的逆向迭代器:
如p1是S::iterator迭代器,那麼S::reverse_iterator(p1)將獲得p1的逆向迭代器
逆向迭代器有一個成員函數base,用來獲得構造了此逆向迭代器的那個迭代器。
如r1是經過S::reverse_iterator(p1)構造的迭代器,那麼,r1.base()==p1.
r1.begin()、r1.end()、r1.rbegin()、r1.rend()之間的關係:
s1.rbegin()==S::reverse_iterator(s1.end()), s1.rbegin().base()==s1.end();
s1.rend()==S::reverse_iterator(s1.begin()), s1.rend().base==s1.begin()
隨機訪問容器提供的迭代器是「隨機訪問迭代器」,它能夠直接經過一個整數來訪問容器中的指定元素。