STL 容器總結(一)

2021-07-28 08:45:44 字數 1812 閱讀 6096

一、所有容器的共通操作

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一對多對映,基於關鍵字快速...