C 中vector使用詳細說明

2021-10-07 15:08:49 字數 3459 閱讀 9811

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

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

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

單獨定義乙個vector:

vectorname; 

//這裡的typename可以是任何基本型別,例如 int、double、char、結構體等,也可以是stl標準容器,例如vector、set、queue等。

eg:

vectorname;

vectorname;

vectorname;

vectorname; //node是結構體的型別

vector> name; // >>之間要加空格

定義 vector 陣列:

vectorarrayname[arraysize];

這樣 arrayname[0] ~ arrayname[arraysize -1] 中每乙個都是乙個 vector 容器。

eg:

vectorvi[100];

(1)通過下標訪問

和訪問普通陣列是一樣,對 vector 容器 vi 來說,直接訪問 vi[index] (如 vi[0]、vi[1)]即可。這裡下標是從 0 到 vi.szie()-1 。

(2)通過迭代器訪問

迭代器(iterator)可以理解為一種類似指標的東西,其定義是:

vector::iterator it;

eg:

vector::iterator it;

vector::iterator it;

//這樣就得到了迭代器 it ,並且可以通過 *it 來訪問 vector 裡元素。

#include#includeusing namespace std;

int main()

為取vi的首元素位址,而it指向這個位址。

從這裡可以看出 vi[i] 和 *(vi.begin()+i) 是等價的。

此外,迭代器還實現了兩種自加操作:++it 和 it++(自減操作同理)。

(1)push_back()

push_back(x) 就是在 vector 後面新增乙個元素 x ,時間複雜度為 o(1)。

(2)pop_back()

pop_back(x) 用以刪除 vector 的尾元素,時間複雜度為 o(1)。

(3)size()

size() 用來獲得 vector 中元素的個數,時間複雜度為 o(1)。size()返回的是 unsigned 型別,不過一般來說用 %d 不會出很大問題,這一點對所有 stl 容器都是一樣的。

(4)clear()

clear() 用來清空 vector 中的所有元素,時間複雜度為 o(n),其中 n 為 vector 中元素的個數。

(5)insert()

insert(it,x) 用來向 vector 的任意迭代器 it 處插入乙個元素 x,時間複雜度為 o(n)。

(6)erase()

1. 刪除單個元素。

erase(it) 即刪除迭代器為 it 處的元素。

2. 刪除乙個區間內的所有元素。

erase(first,last) 即刪除 [first,last) 內的所有元素。

eg:

#include#includeusing namespace std;

int main()

為取vi的首元素位址,而it指向這個位址。

vector::iterator it = vi.begin();

for (int i = 0; i < vi.size(); i++)

vi.pop_back();

//vector的迭代器不支援 ite::iterator ite = vi.begin();ite!=vi.end();ite++)

(1)儲存資料vector 本身可以作為陣列使用,而且在一些元素個數不確定的場合可以很好地節省空間。

有些場合需要根據一些條件把部分資料輸出在同一行,資料中間用空格隔開。由於輸出資料的個數是不確定的,為了更方便地處理最後乙個滿足條件的資料後面不輸出額外的空格。可以先用 vector 記錄所有需要輸出的資料,然後一次性輸出。

(2)用鄰接表儲存圖

使用 vector 實現鄰接表可以讓一些對指標不太熟悉的讀者有乙個比較方便地寫法。

xhttpcache 使用詳細說明

xhttpcache是什麼?xhttpcache 是乙個http高速資料快取服務,也可以做為k v儲存的nosql資料庫 支援redis協議介面,支援http協議的rest介面 xhttpcache有哪些功能?提供http資料快取服務,支援儲存二進位制資料 完整的k v儲存實現,支援資料持久化儲存 ...

BEDTools使用詳細說明

1 概述 bedtools是可用於genomic features的比較,相關操作及進行注釋的工具。而genomic features通常使用browser extensible data bed 或者 general feature format gff 檔案表示,用ucsc genome bro...

C 中Get,Set的詳細說明

屬性的定義和使用 屬性由兩個部分組成 屬性頭和儲存器。儲存器分為get訪問器和set訪問器。屬性的定義和使用屬性由兩個部分組成 屬性頭和儲存器。儲存器分為get訪問器和set訪問器。宣告屬性的一般形式為 修飾符 型別 屬性名set set設定資料 屬性的修飾符可以是任何訪問控制符,還可以被定義為靜態...