---
# System prepended metadata

title: 'std::vector'

---

# `std::vector`
## **```vector```的概念**
```vector```就是一種類似```array```的資料結構，但長度可變更，加入與刪除資料皆由<font color = "F00000">後方</font>操作，中間的值==可自由取用==與變更，簡單來說就是陣列的升級版
## **宣告**
```cpp
#include <vector> //要引用vector標頭檔
vector<資料型態> 變數名稱; //空vector，還沒新增空間(長度 = 0)
vector<資料型態> 變數名稱(大小); //空vector，長度 = 設置大小
vector<資料型態> 變數名稱 = {...資料...}; //含資料vector
```
## **基礎語法**
```cpp
push_back(放入值) //從後插入值
emplace_back(放入值) //自動導向型別建構子(高級push)
insert() //插入元素，時間複雜度O(N)
    
pop_back() //刪除末項(最後)
erase() //移除某個或某段元素，時間複雜度O(N)
clear() //清除全部元素

front() //取得首項之值
back() //取得末項之值
size() //回傳目前長度
empty() //如果為空回傳true 反之回傳false
```

## **迴圈遍歷**
```cpp
vector<int> v;
for(auto a : v){
    // ...
}
//or
for(int i = 0; i < v.size(); i++){
    int a = v[i];
}

for(int i = 0; i < v.size(); i++){
    int &a = v[i];
}
```
{%hackmd 2HMJrJwgRB-0mjZ5lGdh-g %}