vector 用法簡介
阿新 • • 發佈:2020-07-29
目錄
vector(向量)類
宣告
#include <vector> vector<int> v;//相當於長度動態變化的一維(int)陣列 vector<int> v(10);//相當於長度現在為10但仍然動態變化的一維(int)陣列 vector<int> v[Max];//相當於長度動態變化的二維陣列 struct node{ int v,w; }; vector<node> v;//相當於長度動態變化的自定義陣列 vector<int>::iterator it;//一個儲存int的vector的迭代器 //迭代器就像STL容器的指標,並可以用"*"(星號)操作解除引用
特點
- 支援隨機訪問
- 節省空間
用法
函式 | 用途 | 時間複雜度 |
---|---|---|
size() | 返回 vector 的實際長度,即元素個數 | \(\Theta(1)\) |
empty() | 返回 bool 型 判斷 vector 是否為空 | \(\Theta(1)\) |
push_back(x) | 把元素 x 插入vector 的尾部 | \(\Theta(1)\) |
pop_back() | 刪除 vector 最後一個元素 | \(\Theta(1)\) |
begin() | 返回第一個元素迭代器 若 vector 非空 *a.begin()等效於a[0] | \(\Theta(1)\) |
end() | 返回最後一個元素迭代器 若 vector 非空 *a.end()等效於a[a.size()] 此時二者越界訪問 | \(\Theta(1)\) |
front() | 返回第一個元素 等效於a[0]和*a.begin() | \(\Theta(1)\) |
back() | 返回最後一個元素 等效於*--a.end()和a[a.size()-1] | \(\Theta(1)\) |
clear() | 清空所有元素 | \(\Theta(n)\) |
用途
- 用 vector 代替鄰接表存圖
const int N=100010; vector<int> v[N],edge[N]; void add(int x,int y,int z) { v[x].push_back(y); edge[x].push)back(z); } for (int i=0; i<v[x}.size(); i++) { int y=v[x][i],z=edge[x][i]; }