stl容器簡單總結

2021-07-03 10:16:12 字數 3092 閱讀 5340

標準容器類

說明順序性容器

vector

從後面快速的插入與刪除,直接訪問任何元素

deque

從前面或後面快速的插入與刪除,直接訪問任何元素

list

雙鏈表,從任何地方快速插入與刪除

關聯容器

set快速查詢,不允許重複值

multiset

快速查詢,允許重複值

map一對多對映,基於關鍵字快速查詢,不允許重複值

multimap

一對多對映,基於關鍵字快速查詢,允許重複值

容器介面卡

stack

後進先出

queue

先進先出

priority_queue

最高優先順序元素總是第乙個出列

所有標準庫共有函式

預設建構函式

提供容器預設初始化的建構函式。

複製建構函式

將容器初始化為現有同類容器副本的建構函式

析構函式

不再需要容器時進行記憶體整理的析構函式

empty

容器中沒有元素時返回true,否則返回false

max_size

返回容器中最大元素個數

size

返回容器中當前元素個數

operator=

將乙個容器賦給另乙個容器

operator<

如果第乙個容器小於第二個容器,返回true,否則返回false,

operator<=

如果第乙個容器小於或等於第二個容器,返回true,否則返回false

operator>

如果第乙個容器大於第二個容器,返回true,否則返回false

operator>=

如果第乙個容器大於或等於第二個容器,返回true,否則返回false

operator==

如果第乙個容器等於第二個容器,返回true,否則返回false

operator!=

如果第乙個容器不等於第二個容器,返回true,否則返回false

swap

交換兩個容器的元素

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

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

begin

該函式兩個版本返回iterator或const_iterator,引用容器第乙個元素

end該函式兩個版本返回iterator或const_iterator,引用容器最後乙個元素後面一位

rbegin

該函式兩個版本返回reverse_iterator或const_reverse_iterator,引用容器最後乙個元素

rend

該函式兩個版本返回reverse_iterator或const_reverse_iterator,引用容器第乙個元素前面一位

erase

從容器中清除乙個或幾個元素

clear

清除容器中所有元素

下表顯示了順序容器和關聯容器中常用的typedef,這些typedef常用於變數、引數和函式返回值的一般性宣告。

value_type

容器中存放元素的型別

reference

容器中存放元素型別的引用

const_reference

容器中存放元素型別的常量引用,這種引用只能讀取容器中的元素和進行const操作

pointer

容器中存放元素型別的指標

iterator

指向容器中存放元素型別的迭代器

const_iterator

指向容器中存放元素型別的常量迭代器,只能讀取容器中的元素

reverse_iterator

指向容器中存放元素型別的逆向迭代器,這種迭代器在容器中逆向迭代

const_reverse_iterator

指向容器中存放元素型別的逆向迭代器,只能讀取容器中的元素

difference_type

引用相同容器的兩個迭代器相減結果的型別(list和關聯容器沒有定義operator-)

size_type

用於計算容器中專案數和檢索順序容器的型別(不能對list檢索)

特殊總結:

1. queue, stack, priority_queue都不支援iterator遍歷,因此也不能定義iterator的變數

2. 各種容器的實現方式,以及預設的元素之間關係

(1)vector:

連續空間,每次分配一倍元素空間,不夠,重新分配,並要將原資料都拷貝到新空間

(2)map:

紅黑樹方式實現,且預設是按照公升序排序,不能使用sort排序

(3)set:

紅黑樹方式實現,預設插入的元素從小到大排序,可以通過set>方式設定成從大到小排序,

主要操作有:insert(), erase(), 

(4)deque雙端佇列:

小塊空間連續,如果空間不夠,只需要申請一部分空間即可,不需要向vector那樣拷貝元素

基本操作:push_back(),push_front(), pop_back(),pop_front(),size() 等還有很多

(5)queue:

基於deque方式實現,基本的操作:push(), pop(), back(), front(), size(), empty(), 及swap()

(6)stack:

也是基於deque實現,主要的操作:push(), pop(), top(), empty(), size()等

(7)priority_queue:

基於vector,相當於堆,預設的元素使用從達到小的順序排序,即:大根堆;

可以自己定義priority_queue, greater>,從而實現小根堆;

從主要的操作有

top(), 

push(),

pop(),

empty(),

size()

注意:一般來說容器的find操作要比count操作快,因為count要找到所有的相同的資料的個數,但find只需要找到乙個就可以了

別人來自360部落格總結

STL 容器特點簡單總結

stl的容器可以分為以下幾個大類 一 序列容器,有vector,list,deque,string.二 關聯容器,有set,multiset,map,mulmap,hash set,hash map,hash multiset,hash multimap 三 其他的雜項 stack,queue,va...

STL容器及簡單使用總結

stl standard template library 的目的是標準化元件,這樣就不用重新開發,可以使用現成的元件。stl是c 的一部分,因此不用安裝額外的庫檔案。stl是一種泛型程式設計。物件導向程式設計關注的是程式設計的資料方面,而泛型程式設計關注的是演算法。不是很懂 stl主要包括容器 c...

STL容器總結

一.種類 值得注意的是,陣列可以和 stl演算法配合,因為指標可以當作陣列的迭代器使用。二.刪除元素 如果想刪除東西,記住 remove 演算法後,要加上 erase 所謂刪除演算法,最終還是要呼叫成員函式去刪除某個元素,但是因為 remove 並不知道它現在作用於哪個容器,所以 remove 演算...