STL學習 二 vector容器

2021-07-23 19:29:31 字數 2654 閱讀 8865

這一篇講的是vector

vector類稱作向量類,它實現了動態陣列,用於元素數量變化的物件陣列。

vector類也從0開始的下標表示元素的位置,與陣列不同的是vector物件建立後,陣列的元素個數會隨著vector物件元素個數的增大和縮小而自動變化

stl容器裡面的函式集合一般都有共性,也就是說這個有的那個一般也有(注意不同型別容器他們的函式使用後可能效果不同)

vector類常用的函式如下所示:

1.建構函式

vector()://建立乙個空vector

vector(int nsize);//建立乙個vector,元素個數為nsize

vector(int nsize,const& t);//建立乙個vector,元素個數為nsize,且值均為t

vector(const vector&);//複製建構函式

vector(begin,end);//複製[begin,end)區間內另乙個陣列的元素到vector

2.增加函式

#include 

#include

using

namespace

std;

int main()

總之,擴大新元素時,如果超過當前的容量,則容量會自動擴充2倍,如果2倍容量仍不足,則繼續擴大2倍。(這個應該是看不出來的,用capacity()也看不出來,reserve可以手動預留)

#include 

#include

using

namespace

std;

int main()

void push_back(const t& x);//向量尾部增加乙個元素x

iterator insert(iterator it,const t& x);//向量中迭代器指向元素前增加乙個元素x

iterator insert(iterator it,int n,const t& x);//向量中迭代器指向元素前增加n個相同元素x

iterator insert(iterator it,const_iterator first,const_iterator last);//向量中迭代器指向元素前插入另乙個相同型別向量的[first,last)間的資料

3.刪除元素

返回值是乙個迭代器,指向刪除元素下乙個元素;如果是刪除某範圍內的元素時:返回值也表示乙個迭代器,指向最後乙個刪除元素的下乙個元素;

當迭代器指向的vector被刪除以後,那麼迭代器就失效了,除非重新賦值

iterator erase(iterator it);//刪除向量中迭代器指向元素

iterator erase(iterator first,iterator last);//刪除向量中[first,last)中元素

void pop_back();//刪除向量中最後乙個元素

void clear();//清空向量中所有元素

關於刪除erase的**

#include 

#include

int main()

if (iter == v1.end()) //要控制迭代器不能超過整個容器

}for (iter = v1.begin(); iter != v1.end(); iter++)

}

4.遍歷函式

reference at(int pos);//返回pos位置元素的引用

reference front();//返回首元素的引用

reference back();//返回尾元素的引用

iterator begin();//返回向量頭指標,指向第乙個元素

iterator end();//返回向量尾指標,指向向量最後乙個元素的下乙個位置

reverse_iterator rbegin();//反向迭代器,指向最後乙個元素

reverse_iterator rend();//反向迭代器,指向第乙個元素之前的位置

5.判斷函式

bool empty() const;//判斷向量是否為空,若為空,則向量中無元素

6.大小函式

int size() const;//返回向量中元素的個數

int capacity() const;//返回當前向量所能容納的最多數目

int max_size() cosnt;//返回最大可允許的vector元素數量值

7.其他函式

void swap(vector&);//交換兩個同型別向量的資料

void assign(int n,const t& x);//設定向量中第n個元素的值為x

void assign(const_iterator first,const_iterator last);

向量中[first,last)中元素設定成當前向量元素

vector迭代器失效的幾種情況

1.當插入(push_back)乙個元素後,end操作返回的迭代器肯定失效。

3.當進行刪除操作(erase,pop_back)後,指向刪除點的迭代器全部失效;指向刪除點後面的元素的迭代器也將全部失效。

STL順序容器 vector

vector是乙個線性順序結構。相當於陣列,但其大小可以不預先指定,並且自動擴 展。它可以像陣列一樣被操作,由於它的特性我們完全可以將vector 看作動態數 組。在建立乙個vector 後,它會自動在記憶體中分配一塊連續的記憶體空間進行資料 儲存,初始的空間大小可以預先指定也可以由vector 預...

STL序列容器 vector

二 vector vector容器是包含 t 型別元素的序列容器,和 array容器相似,不同的是 vector容器的大小可以自動增長,從而可以包含任意數量的元素 因此型別引數 t 不再需要模板引數 n。只要元素個數超出 vector 當前容量,就會自動分配更多的空間。只能在容器尾部高效地刪除或新增...

STL容器 Vector用法

標頭檔案 include 建立 vectorv 尾部插入元素 v.push back a 在第i 1個元素前面插入a v.insert v,begin i 刪除第i 1個元素 v.erase v,begin i 刪除區間 i,j 的元素 v.erase v.begin i,v.end j 下標訪問第...