標準容器類
說明順序性容器
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 演算...