STL學習之 vector向量容器使用詳解

2021-08-22 11:51:08 字數 2190 閱讀 4774

vector是c++標準模板庫中的乙個重要組成部分,vector是乙個向量容器,是一種動態陣列。它能夠存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,可以動態改變大小。支援快速隨機訪問。

注意:vector將元素儲存在連續的記憶體空間中,由於元素是連續儲存的,由元素的下標來計算其位址是非常快速的,但是在vector容器的中間位置新增或刪除元素會非常耗時,在一次插入或刪除操作後,需要移動插入/刪除位置之後的所有元素,來保持連續儲存。而且,新增乙個元素有時可能還需要分配額外的儲存空間。在這種情況下,每個元素都必須移動到新的儲存空間中。

使用前提:

標頭檔案包含:#include

命名空間:vector屬於std命名空間,因此需要通過命名限定,可在檔案開頭加上

using std::vector;

或者using namespace std;

或者 在定義每個vector物件時,寫成std::vector

參考:

vector是乙個模板類,其內部定義了建構函式和其他各種功能成員函式。其在定義物件時需注意初始化的一些細節,具體可以通過以下三個例子看出。

預設構造:

vectorvecexample1;//預設定義了乙個長度為0,沒有任何值的向量vecexample1,此時:vecexample1.size() = 0,vecexample1[0]會報錯。如果用debug來看的話,vecexample1為0,可通過push_back()函式來動態改變vecexample1的長度。

帶單個整形引數的建構函式:描述向量的初始大小

vectorvecexample2(1);//呼叫vector的建構函式,並傳遞引數1,即定義了乙個長度為1,並預設初始化為0的向量vecexample2,此時:vecexample2.size()=1,vecexample2[0]=0。如果用debug模式來看的話,vecexample2為1。仍然可以通過push_back()函式來動態改變vecexample的長度。

vectorvecexample3(100);//與定義vector vecexample2(1)類似,只不過此時向量長度為100,並且每個向量元素都預設初始化為0。如果用debug模式來看的話,vecexample3為100。

vectorvecexample4(100,20);//與定義vector vecexample3(100)類似,只不過此時相當於呼叫了vector模板類的另一種型別的建構函式,並初始化向量的每個元素為20。

另外還可以利用陣列對vector進行初始化:產生初始值為乙個區間的向量(左閉右開區間)

int myints = ;

std::vector

myvector(myints, myints + 8);// 32 71 12 45 26 80 53 33

建立二維vector矩陣:

int m = 10,n = 5;

vector

> ivec(m ,vector

(n,10));

cout

<" "

<0].size()cout

<#include

#include

using

namespace

std;

typedef

vector

intvector;// 自定義型別intvector

// 測試vector 容器的功能

int main()

(1) 迭代器方法:
vector

::iterator it;

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

v.clear();

詳細解釋:

(3) 對vector中資料求均值和方差

作為陣列的最佳替代者,vector容器有無數的優勢,但是在需要儲存一組固定個數的資料時,例如一年的12個月,一周的七天,此時用vector並不是最佳選擇,stl提供了替代陣列的第二種容器選擇——array容器。

STL 之vector向量容器

vector向量容器 作為陣列的乙個泛化推廣的vector容器,不僅可以陣列一樣的元素隨機訪問,還可以在容器的尾端插入新元素 vector是乙個簡單,高效的容器,在尾端插入和刪除元素,演算法時間複雜度為o 1 常數階,其他元素的插入和刪除為o n 的線性階,其中n為容器的元素個數,vector具有自...

STL 向量vector詳解

vector是stl中最常見的容器,它是一種順序容器,支援隨機訪問。vector是一塊連續分配的記憶體,從資料安排的角度來講,和陣列極其相似,不同的地方就是 陣列是靜態分配空間,一旦分配了空間的大小,就不可再改變了 而vector是動態分配空間,隨著元素的不斷插入,它會按照自身的一套機制不斷擴充自身...

STL(六)Vector向量容器

作為陣列的乙個泛化推廣的vector容器,vector是一種簡單 高效的容器。在尾端插入和刪除元素,演算法時間複雜度為o 1 常數階,其他元素的插入和刪除為o n 線性階,其中n為vector容器的元素個數。vector具有自動的記憶體管理功能,對於元素的插入和刪除,可動態調整所占用的記憶體空間。一...