學習C++ - 向量(vector)!你今天努力了嗎?

虎牙來了 發佈 2020-01-08T21:46:04+00:00

一、向量的介紹 向量 vector 是一種對象實體, 能夠容納許多其他類型相同的元素, 因此又被稱為容器。

一、向量的介紹

向量 vector 是一種對象實體, 能夠容納許多其他類型相同的元素, 因此又被稱為容器。 與string相同, vector 同屬於STL(Standard Template Library, 標準模板庫)中的一種自定義的數據類型, 可以廣義上認為是數組的增強版。

在使用它時, 需要包含頭文件 vector,#include<vector>

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


二、向量的聲明及初始化

vector 型變量的聲明以及初始化的形式也有許多, 常用的有以下幾種形式:

除此之外, 還可以直接使用數組來初始化向量:


三、元素的輸入及訪問

元素的輸入和訪問可以像操作普通的數組那樣, 用cin>>進行輸入, cout<<a[n]這樣進行輸出:

示例:

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

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

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

*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個元素)

③、 vector a(5,1) ;

vector b(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向量進行交換


五、二維向量

與數組相同, 向量也可以增加維數, 例如聲明一個m*n大小的二維向量方式可以像如下形式:

vector< vector > b(10, vector(5)); //創建一個10*5的int型二維向量

在這裡, 實際上創建的是一個向量中元素為向量的向量。同樣可以根據一維向量的相關特性對二維向量進行操作。

:

同樣, 按照這樣的思路我們還可以創建更多維的向量, 不過維數太多會讓向量變得難以靈活控制, 三維以上的向量還需酌情使用。

我是一名從事了10年開發在退休邊緣垂死掙扎的高齡程式設計師,最近我花了一些時間整理了一個完整的學習C語言、C++的路線,項目源碼和工具。對於想學習C/C++的小夥伴而言,學習的氛圍和志同道合的夥伴很重要,筆者推薦我的C語言/C++編程愛好者的聚集地>>>私信我【編程學習】即可!

歡迎初學和進階中的小夥伴。希望你也能憑自己的努力,成為下一個優秀的程式設計師。工作需要、感興趣、為了入行、轉行需要學習C/C++的夥伴可以一起學習!」

喜歡小編的記得動動您的小指點個關注喲!最後分享一張C/C++編程學習路線圖給愛學習的小夥伴們


關鍵字: