C 標準模板庫(STL)整理之vector

2021-10-10 02:53:07 字數 3222 閱讀 3189

vector

vector也叫變長陣列,即「長度根據需要而自動改變的陣列」。

在編寫c++程式時使用vector,需要加上以下標頭檔案和語句:

#include

using

namespace std;

1.vector的定義

vector<

typename

> name;

其中typename指的是型別,name則指變長陣列名。在使用時,typename可以是int,double,char等任意的基本型別,也可以是結構體型別,除此之外,還可以是stl標準容器,如vector、set、queue等。舉例如下:

vector<

int> name1;

//定義乙個int型別的變長陣列

vector<

double

> name2;

//定義乙個double型別的變長陣列

vetctor<

char

> name3;

//定義乙個char型別的變長陣列

vector name4;

//定義乙個結構體型別的變長陣列

vectorint>

> name3;

//類似於定義乙個二維陣列,每乙個維度都是可變的;為避免編譯器將》識別為移位操作,寫為》 >.

定義固定長度的vector陣列

vector<

typename

> name[size]

;

舉例如下:

vector<

int> array[

100]

;//相當於定義了具有100個變長陣列的陣列,每乙個arr[0]~arr[99]都是乙個vector

2.訪問vector容器內的元素

(1)可以通過下標訪問

例:

#include

#include

using

namespace std;

intmain()

return0;

}

(2)通過迭代器訪問

之前看到迭代器兩個字就不想往下看了,聽這個名字就感覺很複雜,其實是寫的方式比較複雜,道理很簡單,將迭代器變數理解為乙個指標,每次指向變長陣列中的乙個元素的位址,要想取出該元素與指標取元素值的方式相同。

定義迭代器的方式為:

vector<

typename

>

::iterator it;

舉例:

vector<

int>

::itarator it;

//變長陣列定義的是什麼型別,前面就寫什麼

#include

#include

using

namespace std;

intmain()

for(vector<

int>

::iterator it=name.

begin()

;itend(

);it++

)//因為迭代器和指標的用法相同,也可用下面方法獲取name陣列的值

vector<

int>

::iterator it=name.

begin()

;for

(int i=

0;i<

3;i++

)return0;

}

name.begin()指向的是name陣列的第乙個元素的位址,name.end指向的是name陣列最後乙個元素的下乙個位址,*(name.begin()+i)等價於name[i]。

3.vector相關函式

(1)push_back(x)

表示向vector陣列中新增乙個元素x,時間複雜度為o(1)。

用法:

vector<

int> arr;

arr.

push_back(10

);

(2)pop_back()

表示刪除vector陣列的最後乙個元素,時間複雜度o(1)。

用法:

vector<

int> arr;

arr.

push_back(10

);arr.

pop_back()

;

(3)size()

用來獲取vector容器中的元素,返回的數是無符號型別,用%d接收也可以,時間複雜度o(1)。

#include

#include

using

namespace std;

intmain()

printf

("%d"

,name.

size()

);return0;

}

(4)clear()

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

(5)insert()

insert(it,x)表示向迭代器it指向的位置插入元素x,時間複雜度o(n)

(6)erase()

erase()可以用來刪除單個元素和乙個區間內的所有元素。時間複雜度o(n);

erase

(it)

;//it為迭代器,即刪除迭代器為it處的元素

#include

#include

using

namespace std;

intmain()

name.

erase

(name.

begin()

,name.begin+1)

;//刪除name[0]

for(vector<

int>

::iterator it=name.

begin()

;itend(

);it++

)return0;

} ``

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)之 vector

一 vector的常見用法詳解 1.vector的定義 標頭檔案 include 單獨定義乙個vector vectorname 注 如果typename也是乙個stl容器,定義的時候要記得在 符號之間加上空格,因為一些使用c 11之前標準的編譯器會把它視為移位操作,導致編譯錯誤。如果typenam...