STL中vector的使用

2021-09-11 08:16:35 字數 1737 閱讀 2333

vector是標準模板庫中我們經常使用的容器,它與陣列類似,它擁有一段連續的記憶體空間,並且起始位址不變,因此它能很好的支援隨機訪問(使用操作符訪問其中的元素).但由於它的記憶體空間是連續的,所以在中間進行插入和刪除操作會造成記憶體塊的拷貝(複雜度為o(n)),另外,當該陣列的記憶體空間不夠時,需要重新申請一塊足夠大的記憶體並進行記憶體的拷貝,這些都大大影響了vector的效率。每個編譯器對它進行記憶體分配時,一般是當前大小的兩倍,然後把原陣列的內容拷貝過去。

下面是vector的簡單使用:

#include

#include

#include

#include

using namespace std;

void vectordemo();

int main()

//容器的使用

void vectordemo()

;//宣告乙個int型別集合的容器,並用陣列array對容器進行初始化

vectorv(array, array + size);

cout << "frist element:" << v.front() << "\nlast element:" << v.back() << endl;  //1 6

//通過下標操作符和at函式來修改容器中的函式

//at函式會檢查下標是否越界

v[1] = 7;             //1 7 3 4 5 6

v.at(2) = 10;         //1 7 10 4 5 6

//在第二個位置插入22元素

v.insert(v.begin() + 1, 22); //1 22 7 10 4 5 6

//尾部新增元素19

v.push_back(19);             //1 22 7 10 4 5 6 19

//宣告乙個迭代器(必須vector::iterator)

vector::iterator iter = v.begin();

while (iter != v.end())

cout << endl;

//查詢元素22的位置,並返回迭代器

iter = find(v.begin(), v.end(), 22);

if (iter != v.end())

else

//系統的最大容量

cout << "the max size of the vector is:" << v.max_size()catch (out_of_range & e)

//清除容器中的元素

v.erase(v.begin());           //清除第乙個元素

v.erase(v.begin(), v.end());  //清除容器中的全部元素

cout << "after erase,v " << (v.empty() ? "is" : "is not") << " empty" << endl;

//從開始位置把陣列插入容器中

v.insert(v.begin(), array, array + size);

cout << "after erase,v " << (v.empty() ? "is" : "is not") << " empty" << endl;

//用clear函式清空容器

v.clear();

cout << "after erase,v " << (v.empty() ? "is" : "is not") << " empty" << endl;

}

STL中vector的使用

作用 它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。vector在c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。特別注意 使用vector需要注意以下幾點 1 如果你要表示的向量長度較長 ...

STL中vector使用詳解

vector類常用的函式如下所示 1.建構函式 vector 建立乙個空vector vector int nsize 建立乙個vector,元素個數為nsize vector int nsize,const t t 建立乙個vector,元素個數為nsize,且值均為t vector const ...

STL之vector的使用

本文 vector是連續記憶體容器,換句話說,標準要求所有標準庫實現的時候,vector中的元素的記憶體必須是連續的。所以對於插入和刪除的時間複雜度是很高的,因為刪除或者插入的時候,需要元素的移動,即元素複製拷貝。vector的內部實現一般需要用到placement new 所以效率很高,因為很多的...