vector容器用法詳解

2021-08-17 05:43:33 字數 4252 閱讀 7809

**:

vector類稱作向量類,它實現了動態陣列,用於元素數量變化的物件陣列。像陣列一樣,vector類也用從0開始的下標表示元素的位置;但和陣列不同的是,當vector物件建立後,陣列的元素個數會隨著vector物件元素個數的增大和縮小而自動變化。

#include "stdafx.h"

#include#includeusing namespace std;

class a

;int _tmain(int argc, _tchar* argv)

// vectorsample.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include#includeusing namespace std;

class a

;int _tmain(int argc, _tchar* argv)

; //建立vecintd

vectorvecintd(iarray,iarray+3);

//列印vectora,此處也可以用下面注釋內的**來輸出vector中的資料

/*for(int i=0;i::iterator it = vecinta.begin();it!=vecinta.end();it++)

cout<::iterator it="vecintb.begin()">

cout<::iterator it="vecintc.begin()">

cout<::iterator it="vecintd.begin()">

cout程式的執行結果如下:

上面的**用了4種方法建立vector並對其初始化

// vectorsample.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include#includeusing namespace std;

int _tmain(int argc, _tchar* argv)

cout上述**對乙個整形向量類進行操作,先定義乙個整形元素向量類,然後插入3個值,並用3種不同的方法輸出,程式執行結果如下:

// vectorsample.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"

#include#includeusing namespace std;

class a

};int _tmain(int argc, _tchar* argv)

cout上述**通過定義元素為類的向量,通過插入3個初始化的類,並通過3種方法輸出,執行結果如下:

// vectorsample.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"

#include#includeusing namespace std;

class a

};int _tmain(int argc, _tchar* argv)

cout

} cout<::iterator it="vecclassa.begin();it!=vecclassa.end();it++)

cout上述**通過定義元素為類指標的向量,通過插入3個初始化的類指標,並通過3種方法輸出指標指向的類,執行結果如下:

修改元素的方法主要有三種:1.通過陣列修改,2.通過引用修改,3.通過迭代器修改

// vectorsample.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"

#include#includeusing namespace std;

int _tmain(int argc, _tchar* argv)

cout<::iterator it="vecinta.begin();it!=vecinta.end();it++)

cout<::iterator itr=" vecinta.begin>

*itr = 28;

cout<

cout程式執行結果如下:

刪除向量主要通過erase和pop_back,示例**如下

// vectorsample.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"

#include#includeusing namespace std;

int _tmain(int argc, _tchar* argv)

vecinta.erase(vecinta.begin()+4);

cout<

cout<::iterator it="vecinta.begin();it!=vecinta.end();it++)

cout<::iterator it=" vecinta.begin>

cout程式執行結果如下:

當執行**vectorv(2,5)時,在記憶體裡建立了2個整形元素空間,值是5.當增加乙個元素時,原有的空間由2個程式設計4個整形元素空間,並把元素1放入第3個整形空間,第4個空間作為預留空間。當增加元素2時,直接把值2放入第4個空間。當增加元素3時,由於原有向量中沒有預留空間,則記憶體空間由4個變為8個整形空間,並把值放入第5個記憶體空間。

總之,擴大新元素時,如果超過當前的容量,則容量會自動擴充2倍,如果2倍容量仍不足,則繼續擴大2倍。本圖是直接在原空間基礎上畫的新增空間,其實要複雜的多,包括重新配置、元素移動、釋放原始空間的過程。因此對vector容器而言,當增加新的元素時,有可能很快完成(直接存在預留空間中),有可能稍慢(擴容後再放新元素);對修改元素值而言是較快的;對刪除元素來說,弱刪除尾部元素較快,非尾部元素稍慢,因為牽涉到刪除後的元素移動。

// vectorsample.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"

當執行**vectorv(2,5)時,在記憶體裡建立了2個整形元素空間,值是5.當增加乙個元素時,原有的空間由2個程式設計4個整形元素空間,並把元素1放入第3個整形空間,第4個空間作為預留空間。當增加元素2時,直接把值2放入第4個空間。當增加元素3時,由於原有向量中沒有預留空間,則記憶體空間由4個變為8個整形空間,並把值放入第5個記憶體空間。

總之,擴大新元素時,如果超過當前的容量,則容量會自動擴充2倍,如果2倍容量仍不足,則繼續擴大2倍。本圖是直接在原空間基礎上畫的新增空間,其實要複雜的多,包括重新配置、元素移動、釋放原始空間的過程。因此對vector容器而言,當增加新的元素時,有可能很快完成(直接存在預留空間中),有可能稍慢(擴容後再放新元素);對修改元素值而言是較快的;對刪除元素來說,弱刪除尾部元素較快,非尾部元素稍慢,因為牽涉到刪除後的元素移動。

vector容器用法詳解

vector類稱作向量類,它實現了動態陣列,用於元素數量變化的物件陣列。像陣列一樣,vector類也用從0開始的下標表示元素的位置 但和陣列不同的是,當vector物件建立後,陣列的元素個數會隨著vector物件元素個數的增大和縮小而自動變化。include stdafx.h include inc...

vector容器用法

1 標頭檔案 include.2 建立vector物件,vector vec 3 尾部插入數字 vec.push back a 4 使用下標訪問元素,cout vector iterator it for it vec.begin it vec.end it cout it 6 插入元素 vec.i...

vector容器用法(二)

vector容器用法 一 刪除指定位置的元素 vector a 3,6 初始化了3個值為6的元素 a.erase a.begin 0 刪除第乙個元素值得注意的是erase的引數為指向相應元素的迭代器,不能是其他型別的數,刪除後,後面的元素會替代上去,所以vector也會相應地改變。string也有e...