1. 程式人生 > 實用技巧 >vector 用法簡介

vector 用法簡介

目錄

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];
}