C STL學習之二 容器vector大總結

2021-06-13 14:11:48 字數 1844 閱讀 3863

一、容器vector

標頭檔案:#include

二、vector的功能

特點:(1)支援隨即訪問。

(2)在末端新增或刪除元素,效能很好。但是在前段或者中部的話,效能較差。需要移動。

注意:函式size()可以返回vector的大小,即vector中實際元素的個數。而capacity()返回容量。區別看下面的示例**:

三、vector的操作函式

所有的建構函式和析構函式如下:

非變動性操作:

賦值操作:

元素訪問

在這幾個函式中,唯一進行下標檢查的是at函式。

因此,在呼叫operator的時候,必須心理清楚索引是否是有效的。

迭代器相關函式

迭代器失效的兩種情況是:

1、在乙個較小的位置上刪除或者是移動元素。

2、由於容量的變換引起記憶體重新分配。

插入和移除元素

插入和移除元素,都會使「作用點」之後的各元素的reference、pointers、iterators失效。插入操作還可能引發記憶體重新分配,那麼該容器上的所有的reference、pointers、iterators都會失效。

四、把vector當做一般陣列使用

現在的c++標準保證vector的元素必須分布於連續空間中。對於vector中的乙個合法索引,滿足下列表示式:

&v[i] = &v[0] + i;

我們必須保證vector能夠容納所有資料。如果使用的是c-string,記住最後有個'\0'。

只要我們需要乙個元素型別為t的陣列,就可以採用vector,然後傳遞第乙個元素的位址給它。

注意:千萬不要把迭代器當做第一元素的位址來傳遞。因為vector迭代器是由實作版本定義的,不一定是乙個一般指標。

五、乙個例子

int main ()

int k = 0;

while(k < mytest.size())

cout<

再來乙個例子:

#include

#include

#include

using namespace std;

int cmp( const int &a, const int &b )

int main ()

int k = 0;

while(k < mytest.size())

cout

cout<

}return 0;

}

C STL學習之二 容器vector大總結

使用vector必須包含標頭檔案 include 型別vector是乙個定義於namespace std內的template template 第二個引數定義記憶體模型。我們一般採用預設的記憶體模型。二 vector的功能 vector模塑出乙個動態陣列。vector將其元複製到內部的動態陣列中。元...

C STL容器學習(一)

容器 一些特定型別物件的集合 順序容器 vector list forward list vector 可變大小陣列,支援快速隨機訪問 list 雙向鍊錶,只支援雙向順序訪問 forward list 單向鍊錶,只支援單向順序訪問 迭代器 迭代器 iterator 是一種物件,它能夠用來遍歷標準模板...

C STL容器的學習 vector

簡單點來說vector就是乙個模板類,而且是連續的 list不是連續的 刪除中間的任意乙個元素,後面的元素都需要往前移動,但對於陣列來說,它可以擴容.vectorv1 最大容量,初始值 vetcorv1.push back i 向v1的尾部插入i vectorv1.預設v1為空,故不能賦值 vect...