c 中的vector 的運用模板

2021-08-30 21:43:12 字數 2592 閱讀 3868

一、向量的介紹

向量vector是一種物件實體, 能夠容納許多其他型別相同的元素, 因此又被稱為容器。 與string相同, vector 同屬於stl(standard template library, 標準模板庫)中的一種自定義的資料型別, 可以廣義上認為是陣列的增強版。

在使用它時, 需要包含標頭檔案 vector,#include

vector 容器與陣列相比其優點在於它能夠根據需要隨時自動調整自身的大小以便容下所要放入的元素。此外, vector 也提供了許多的方法來對自身進行操作。

二、向量的宣告及初始化

vector 型變數的宣告以及初始化的形式也有許多, 常用的有以下幾種形式:

vectora ;                                //宣告乙個int型向量a

vectora(10) ; //宣告乙個初始大小為10的向量

vectora(10, 1) ; //宣告乙個初始大小為10且初始值都為1的向量

vectorb(a) ; //宣告並用向量a初始化向量b

vectorb(a.begin(), a.begin()+3) ; //將a向量中從第0個到第2個(共3個)作為向量b的初始值

三、元素的輸入及訪問

#includeusing namespace std;

int main()

vector::iterator it;

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

cout<<*it<<" ";

return 0;

}

在元素的輸出上, 還可以使用遍歷器(又稱迭代器)進行輸出控制。在 vectorb(a.begin(), a.begin()+3) ; 這種宣告形式中, (a.begin()、a.begin()+3) 表示向量起始元素位置到起始元素+3之間的元素位置。(a.begin(), a.end())則表示起始元素和最後乙個元素之外的元素位置。

向量元素的位置便成為遍歷器, 同時, 向量元素的位置也是一種資料型別, 在向量中遍歷器的型別為: vector::iterator。 遍歷器不但表示元素位置, 還可以再容器中前後移動。

在上例中講元素全部輸出部分的**就可以改寫為:

vector::iterator t ;

for(t=a.begin(); t!=a.end(); t++)

cout<<*t<<" " ;

// *t 為指標的間接訪問形式, 意思是訪問t所指向的元素值。

四、向量的基本操作
1>. a.size()                 //獲取向量中的元素個數

2>. a.empty() //判斷向量是否為空

3>. a.clear() //清空向量中的元素

4>. 複製

a = b ; //將b向量複製到a向量中

5>. 比較

保持 ==、!=、>、>=、<、<= 的慣有含義 ;

如: a == b ; //a向量與b向量比較, 相等則返回1

6>. 插入 - insert

①、 a.insert(a.begin(), 1000); //將1000插入到向量a的起始位置前

②、 a.insert(a.begin(), 3, 1000) ; //將1000分別插入到向量元素位置的0-2處(共3個元素)

③、 vectora(5, 1) ;

vectorb(10) ;

b.insert(b.begin(), a.begin(), a.end()) ; //將a.begin(), a.end()之間的全部元素插入到b.begin()前

7>. 刪除 - erase

①、 b.erase(b.begin()) ; //將起始位置的元素刪除

②、 b.erase(b.begin(), b.begin()+3) ; //將(b.begin(), b.begin()+3)之間的元素刪除

8>. 交換 - swap

b.swap(a) ; //a向量與b向量進行交換

c.pop_back()       // 刪除最後乙個資料。

c.push_back(elem)  // 在尾部加入乙個資料

vectora;

for(int i=0;i<10;i++)

a.push_back(i);

#includeusing namespace std;

void print(vectorv)

C 中 vector容器 模板類陣列

對vector容器的一點理解,相對於陣列,vector容器可以不固定大小,但是需要而外的記憶體 空間,這是用空間來換取陣列動態大小的一種方式 1.定義 vector a 定義了乙個空的int型陣列 vectorb n 定義了乙個長度為n的double型陣列 vectorb c 定義乙個c的副本 ve...

C 中vector和vector的區別

在使用stl容器 比如map list vector等 的時候,是用放乙個物件還是放乙個物件指標,即是用vector還是vector,這裡的vector可以換成其他的容器,int可以換成其他基本型別,也可以自定義的資料結構或類。首先,要說明的是,這兩種方式,怎麼用都可以實現功能,把一組整型數放到容器...

標準模板庫中的向量 vector

c 資料結構與演算法 第4版 adam drozdek 著 徐丹 吳偉敏 清華大學出版社 標頭檔案 include 向量是最簡單的stl容器,其資料結構與陣列類似,佔據著乙個連續的記憶體塊。由於記憶體位置是連續的,所以向量中的元素可以隨機訪問,訪問向量中任何乙個元素的時間也是固定的。儲存空間的管理是...