STL Vector模板類常見函式

2021-09-13 19:00:08 字數 1847 閱讀 5406

由於經常在做題中遇到,所以記錄下:

#include//包含標頭檔案

建立vector

vectortest;//建立乙個vector

1、獲取vector裡的元素個數

int len = vec.size();

2、向vector新增元素

int temp;

vec.push_back(temp);//尾插

//vectorvec 第乙個數是 vec.front();  最後乙個數是vec.back();這裡和迭代器遍歷不一樣,這裡返回數字,那裡是個指標 

3、初始化vector,有五種方式

vectorvec;   //初始化為空

vectorvec(v1);  //用另乙個vector來初始化,即構造乙個副本

vectorvec(n, i); //大小為n,並全部初始化為元素i (常用)

vector(n); //構造大小為n的容器,沒有初始化裡面的元素

vector; //構造大小為4,並初始化裡面的各個元素

4、使用迭代器遍歷容器

vector::iterator it;

for(it=vec.begin();it!=vec.end();it++) 

vec[it]=0;

或者for(auto &i:vec)

i = 0;

注意:關於vector的下標操作。vector的下標操作只能改變或者獲取已有的元素的值,不能往vector裡新增元素!

5、其他函式

vec.empty();    //判斷是否為空,為空返回true,否則返回false;

vec.capacity(); //獲取容器分配的儲存空間,區別於vec,size()

vec.resize(n+m); //調整vec的大小變為n+m

vec.swap(vec2);//vec和vec2型別要相同,大小可以不同,直接交換容器內容,所有的迭代器,引用以及指標在交換後依舊有效,全都交換了一遍。

順序容器的賦值操作:

c1 = c2

刪除容器 c1 的所有元素,然後將 c2 的元素複製給 c1。c1 和c2 的型別(包括容器型別和元素型別)必須相同

c1.swap(c2)

交換內容:呼叫完該函式後,c1 中存放的是 c2 原來的元素,c2 中存放的則是 c1 原來的元素。c1 和 c2 的型別必須相同。該函式的執行速度通常要比將 c2 複製到 c1 的操作快

c.assign(b,e)

重新設定 c 的元素:將迭代器 b 和 e 標記的範圍內所有的元素複製到 c 中。b 和 e 必須不是指向 c 中元素的迭代器

c.assign(n,t)

將容器 c 重新設定為儲存 n 個值為 t 的元素

6、vector經常用到的一些函式功能。需加標頭檔案 #include

(1)對元素排序

sort(vec.begin(),vec.end());

(2)反轉容器

reverse(vec.begin(), vec.end());

(3)交換元素

swap(vec[i],vec[j]);

STL vector用法及模板

方便檢視 在stl的標頭檔案中定義了vector 向量容器模板類 vector容器以連續陣列的方式儲存元素序列,可以將vector看作是以順序結構實現的線性表。當我們在程式中需要使用動態陣列時,vector將會是理想的選擇,vector可以在使用過程中動態地增長儲存空間。vector模板類需要兩個模...

C 標準模板庫(STL) vector

vector翻譯為向量,在c 中翻譯為 變長陣列 更容易理解。include includeusing namespace std int main 清空元素 age.insert age.begin 2,0 在指定位置插入元素 age.pop back 刪除尾元素 age.erase age.be...

類模板 模板類

下面定義的是類模板,用int例項化t後成為模板類。例項化類模板的語法 類名 模板實參表 結合下例即 array就是將類模板array例項化為模板類的語法。類模板 include using namespace std templateclass array array t operator int ...