STL容器基本功能與分類

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()

 

隨機訪問容器提供的迭代器是「隨機訪問迭代器」,它能夠直接經過一個整數來訪問容器中的指定元素。

相關文章
相關標籤/搜索