演算法筆記 STL vector

2021-10-04 05:18:55 字數 2079 閱讀 7874

vector

定義

向量 個人理解是公升級的陣列

vector<

typename

> name;

vector<

int> name;

vector<

double

> name;

vector<

char

> name;

vector name;

//node是結構體的型別

vectorint>

> name;

//>>之間要加空格 //兩個都可變長的二維陣列

vector<

typename

> arrayname[arraysize]

;//arrayname[0]~arrayname[arraysize - 1]中每乙個都是乙個容器

//但是其一維長度已經固定為arraysize, 另一維才是"變長"的 與上面那種有區別

vector的訪問

通過下標訪問 對 vector vi 來說,vi[0], vi[1]訪問即可 下標從0 到 vi.size() - 1

通過迭代器訪問 迭代器(iterator) 定義為 vector::iterator it;

vector<

int>

::iterator it;

vector<

double

>

::iterator it;

//得到迭代器it

通過*it來訪問vector裡的元素

//eg.

#include

#include

using

namespace std;

intmain()

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

//只有在vector和string中,才允許使用vi.begin() + 1 這種迭代器加整數的寫法

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

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

*///end()作為迭代器末尾標誌,不儲存任何元素 begin() end()左閉右開

vi.erase

(vi.

begin()

+1, vi.

begin()

+4);

// 1 5

for(vector<

int>

::iterator it = vi.

begin()

; it != vi.

end(

); it++

)return0;

}

常用函式

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

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

size() 獲取vector中元素的個數,時間複雜度為o(1) 返回的是unsigned型別

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

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

vi.

insert

(vi.

begin()

+2,-

1);//將-1 插入vi[2]的位置

earse() : 兩個用法 :

刪除單個元素 erase(it)即刪除迭代器為it處的元素 vi.erase(vi.begin() + 3) 刪除vi中第4個元素

刪除乙個區間內的所有元素 erase(first, last) 刪除[first, last) 左閉右開

常見用途

儲存資料 元素不確定的場合

用鄰接表儲存圖

STL vector學習筆記

vector 是stl的動態大小的陣列,連續記憶體的容器 和一般資料一樣對於插入和刪除的時間複雜度是很高的。includeint main assign beg,end 將 beg end 區間中的資料賦值給容器。assign size type num,const type val 賦num個值為...

STL vector 的使用演算法

includeusing namespace std include 向量 include 迭代器 include 演算法 include 函式 stl三大元件 容器,演算法,迭代器 void main vectora ar,ar 8 a.push back 1 a.push back 2 copy...

題目筆記 UVA101 STL vector

stl vector include include include using namespace std const int maxx 30 int n string s1,s2 vector plie maxx void find bl int a,int p,int h 這裡用的是引用不太明...