STL中各容器之函數總結

來源:互聯網
上載者:User

標籤:stl 容器 函數 c++

一.序列和關聯非共有函數

所有標準庫共有函數  (構造,相關屬性,迭代器,插入與刪除,比較,swap)


其中operator>,operator>=,operator<,operator<=,operator==,operator!=均不適用於priority_queue

順序容器和關聯容器共有函數


(1)   序列容器都提供5種相同的構造方法;關聯容器都提供3種相同的構造方法

(2)    還有insert插入函數(序列容器有3個相同版本的插入。關聯容器也有3個版本的)

(3)    序列容器提供2中相同的erase,關聯容器提供3種相同的erase。

(4)    屬性函數:除vector多了capacity()函數,其餘都是size,max_size,empty這3

二.非共有函數

(1)只有序列容器才有的函數

元素的訪問 ; 元素的賦值

(2)   只有關聯容器才有的函數

尋找

(3)   序列元素對首尾元素的插入,刪除與訪問

Vector

插入與刪除:push_back(),pop_back()

訪問:front,back(分別均有2個版本)

重要:為什麼沒有push_front,,但是卻有front,這是start迭代器的功勞

 

Deque,list

插入與刪除:push_back(),pop_back(),push_front,pop_front

訪問:同vector

 

Stack,queue

插入與刪除很明顯

訪問:queqe同vector。但是stack卻只有top(也即back),為什嗎?

 

Slist

插入與刪除:push_front與pop_front

訪問:front

(4)   只有序列容器才有的訪問之非頭尾的訪問

只有Vector與deque才可以,因為只有他們才提供了隨機訪問迭代器

1.[] (2種版本)

2.at(2種版本)

(5)只有序列容器才有的賦值

     都一樣;assign(2個版本)

(6)

Vector和string既有reserve,也有resize,它們兩個可以利用reserve來避免不必要的重新分配。

由於deque沒必要提供所謂的空間保留功能(原因見STL源碼P143),所以其沒有reserve函數。同理,List也只提供resize函數

關聯容器不提供這兩個函數。

 

(7)list在序列容器中比較特殊

合并:merge(2個版本),splice(3個版本)

排序:sort(2個版本)

反轉  

       多了刪除:remove(2個版本),unique(2個版本)

(8)關聯容器特有的尋找

     Set與multiset:find,lower_bound,upper_bound,equal_range,count,

     Map與multimap:前4個函數還有一個非const版本

    

 

(9)

Vector和string既有reserve,也有resize,它們兩個可以利用reserve來避免不必要的重新分配。

由於deque沒必要提供所謂的空間保留功能(原因見STL源碼P143),所以其沒有reserve函數。同理,List也只提供resize函數

 

關聯容器不提供這兩個函數。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.