C 標準模板庫(STL)之 vector

2022-06-07 22:33:10 字數 1760 閱讀 8336

一、vector的常見用法詳解

1.vector的定義

標頭檔案:#include

單獨定義乙個vector:

vectorname;

注:如果typename也是乙個stl容器,定義的時候要記得在》符號之間加上空格,因為一些使用c++11之前標準的編譯器會把它視為移位操作,導致編譯錯誤。

如果typename是vector,就是下面的這樣定義:

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

例子:vectorname;

vectorname;

vectorname;

vectorname;

定義vector二維陣列:

vectorarrayname[arraysize];

例如:vectorvi[100];

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

2.vector容器內元素的訪問

(1)通過下標訪問

vector[index]  即可訪問

(2)通過迭代器訪問

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

vector::iterator it

這樣it就是乙個vector::iterator 型的變數。

例子:vector::iterator it;

vector::iterator it;

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

例如:

vectorvi;

for(int i=1;i<=5;i++)

可以通過類似下標和指標訪問陣列的方式訪問容器內的元素

#include#include

using

namespace

std;

intmain()

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

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

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

return0;

}

輸出結果:1 2 3 4 5

其中 vi[i]和*(vi.begin()+i)是等價的

例如:

for(vector::iterator it=vi.begin();it!=vi.end();it++)

3.vector常用函式例項解析

(1)push_back()

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

(2)pop_back()

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

(3)size()

size()用來獲得vector中元素的個數,時間複雜度o(1)。

(4)clear()

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

注意:因為相應記憶體區域的內容並沒有被覆蓋,這樣就保持著原來的值,直到這部分記憶體被重新寫入時才會改變。

(5)insert()

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

(6)erase()

erase()有兩種用法:刪除單個元素、刪除乙個區間內的所有元素,時間複雜度o(n)。

4.vector的常見用途

(1)儲存資料

(2)用鄰接表儲存圖

C 標準模板庫(STL)之vector

vector即長度可變的陣列 標頭檔案宣告 include using namespace std 1.定義 vector int v vectorint age 兩個 之間需加空格,不然會被誤以為是移位操作 vector int vi 100 vector陣列,vi 0 vi 99 每乙個都是乙個...

C 標準模板庫(STL)之 string

在c語言中,一般使用字元陣列char str來存放字串,但是使用字元陣列有時會顯得麻煩,c 在stl中加入了string型別,對字串常用的需求功能進行了封裝,使得操作起來更方便,且不易出錯。如果需要使用string 需要新增string標頭檔案,即 include 注 string.h和string...

C 標準模板庫(STL)之Stack

stack 棧,乙個後進先出的容器。1.1 stack的定義 加上標頭檔案 include和using namespace std stacksk 1.2 stack容器元素的訪問 stack是一種操作受限制的線性表,只能通過top 來訪問棧頂元素。include include using nam...