一、所有容器的共通操作
1、equality(==) 和 inequality(!=) 運算子, 返回 true 或者 false。
2、assignment(=) 運算子,將某個容器複製給另乙個容器。
3、empty() 會在容器沒有任何元素的時候返回 true,否則 false。
4、size() 返回目前容器中持有元素的數目。
5、clear() 清除所有元素
二、 每個容器都提供了begin() 、end()、 insert()、 erase() 函式
1、begin() 返回乙個 iterator,指向容器的第乙個元素。
2、end() 返回乙個iterator,指向容器的最後乙個元素的下乙個位置。
3、insert() 將單一或某個範圍內的元素插入容器內。
4、erase() 將容器內單一或某個範圍內的元素刪除。
三、 順序性容器
vector
1、vector 和 list 是最主要的兩個順序性容器。
2、vector 以一塊連續的記憶體來存放元素,對 vector 進行隨機訪問,比較有效率,vector 內的每個元素都被儲存在距離起始點的固定偏移位置上。如果將元素插入任意位置,而不是末端,那麼效率將很低,因為插入位置右端的每乙個元素,都必須被複製乙份,然後依次向右移動。同樣道理,刪除 vector 內最後乙個元素以外的任意元素,同樣缺乏效率。
list
list 是雙向鏈結,而非連續記憶體來儲存內容,因此可以執行前進或者後退操作。list 中每個元素包含三個字段:value、back 指標、front 指標。在 list 的任意位置插入和刪除都頗具效率,因為 list 本身只需設定 back 和 front 指標即可。如果對 list 進行隨機訪問的操作,則效率欠佳,因為每次訪問都必須遍歷介於其中的所有元素。
deque
deque 和 vector 行為比較相似,都以連續記憶體來儲存元素。和 vector 不同的是,deque 對於前端元素的插入和刪除效率更高,末端亦同。如果我們需要在容器前端插入元素,並執行末端的刪除操作,deque 比較理想。(標準庫的 queue 以 deque 作為底部儲存元素)
定義容器的方法
# 產生空的容器:
list
slist;
vector
ivec;
# 產生特定大小的容器:
list
ilist(1024);
vector
svec(32);
# 產生特定大小的容器,並制定初值:
list
ilist(10, -11);
vector
svec(12, "hello");
# 通過一對iterator產生容器:
int ia[6] = ;
vector
ivec(ia, ia+6);
# 複製容器
list
slist(1, "hello");
list
slist1(slist);
push_back() 會在末尾插入乙個元素
pop_back() 會刪除末尾的最後乙個元素
除此之外,list 和 deque (不包括 vector) 還提供了 push_front() 和 pop_front() 。
pop_back() 和 pop_front() 這兩個操作函式並不會返回被刪除的元素值。因此,如果要讀取最前端的元素,使用front() ,讀取末端元素,使用back() 。
STL容器總結
一.種類 值得注意的是,陣列可以和 stl演算法配合,因為指標可以當作陣列的迭代器使用。二.刪除元素 如果想刪除東西,記住 remove 演算法後,要加上 erase 所謂刪除演算法,最終還是要呼叫成員函式去刪除某個元素,但是因為 remove 並不知道它現在作用於哪個容器,所以 remove 演算...
STL容器總結
stl 豆瓣 stl模板類總結 友朋小盧 友朋小盧 2012 09 19 00 19 29 一 vector模板類 1 包含在標頭檔案vector中,內部機理是使用動態記憶體分配。2 如何定義vector類 vectorstr 5 vector vector int n 3 操作賦被過載,所以可以這...
stl容器簡單總結
標準容器類 說明順序性容器 vector 從後面快速的插入與刪除,直接訪問任何元素 deque 從前面或後面快速的插入與刪除,直接訪問任何元素 list 雙鏈表,從任何地方快速插入與刪除 關聯容器 set快速查詢,不允許重複值 multiset 快速查詢,允許重複值 map一對多對映,基於關鍵字快速...