STL容器基本功能與分類


STL有7中容器

分別為:

  vector  向量    <vector>(頭文件)  隨機訪問容器、順序容器

  deque  雙端隊列  <deque>       隨機訪問容器、順序容器

  list     列表    <list>          可逆容器、順序容器

  set     集合    <set>         可逆容器、關聯容器

  multiset 多重集合   <set>           可逆容器、關聯容器

  map   映射     <map>         可逆容器、關聯容器

  multimap 多重映射       <map>         可逆容器、關聯容器

 

設S表示一種容器類型(如:vector<int>),s1、s2都是S類型的實例,容器都具有如下基本功能

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

 

隨機訪問容器提供的迭代器是“隨機訪問迭代器”,它可以直接通過一個整數來訪問容器中的指定元素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM