# 資料結構介紹 - Vector - by Peter Wang
###### tags: `資料結構介紹`
## vector 簡介
本篇介紹 C++ 的 std::vector 用法,C++ std::vector 教學如下:
要使用 vector 容器的話,需要引入的標頭檔:vector
std::vector 是一個可以改變陣列大小的序列容器。 是陣列的升級版,主要因為 vector 能高效地對記憶體進行管理以及動態增長。 vector 其實就是將陣列和方法封裝形成的一個類別。
## vector 初始化
### 引入標頭檔
```clike=
#include <iostream>
#include <vector>
```
### 建立vector
這邊介紹幾種 vector 初始化,這裡是宣告一個 int(任何型態的都可以,這裡以int當範例)整數類型的 vector,裡面沒有任何元素(空),size 為 0 表示 vector 容器中沒有任何元素。
```clike=
vector <int> v1;//<可以填任何形態>
vector <int> v2={1,2,3};
vector <int> v3=v2;//兩個vector相等
```
## vector 常用功能
以下為 std::vector 內常用的成員函式
### push_back
push_back:把元素加到尾巴,必要時會進行記憶體配置
```clike=
vector <int> v1;
v1.push_back(1);//{1}
v1.push_back(2);//{1,2}
```
### pop_back
pop_back:移除尾巴的元素
```clike=
vector <int> v1;
v1.push_back(1);//{1}
v1.push_back(2);//{1,2}
v1.pop_back();//{1}
```
### insert
insert:插入元素
insert(插入地址,插入數值)
```clike=
vector <int> v1;
v1.push_back(1);//{1}
v1.push_back(2);//{1,2}
v1.pop_back();//{1}
v1.insert(v1.begin()+1,2);//{1,2}
```
### erase
erase:移除某個位置元素, 也可以移除某一段範圍的元素
```clike=
vector <int> v1;
v1.push_back(1);//{1}
v1.push_back(2);//{1,2}
v1.pop_back();//{1}
v1.insert(v1.begin()+1,2);//{1,2}
v1.erase(v1.begin());//{2}
```
### size:回傳目前長度
size:回傳目前長度
```clike=
vector <int> v1;
v1.push_back(1);//{1}
v1.push_back(2);//{1,2}
v1.pop_back();//{1}
v1.insert(v1.begin()+1,2);//{1,2}
v1.erase(v1.begin());//{2}
cout<<v1.size();// 1
```
### clear:清空容器裡所有元素
clear:清空容器裡所有元素
```clike=
vector <int> v1;
v1.push_back(1);//{1}
v1.push_back(2);//{1,2}
v1.pop_back();//{1}
v1.insert(v1.begin()+1,2);//{1,2}
v1.erase(v1.begin());//{2}
cout<<v1.size();// 1
v1.clear();
cout<<v1.size();// 0
```
### empty
empty:回傳是否為空
回傳 1 (true) vector是空的;回傳 0 (false) vector有東西
```clike=
vector <int> v1;
v1.push_back(1);//{1}
v1.push_back(2);//{1,2}
v1.pop_back();//{1}
v1.insert(v1.begin()+1,2);//{1,2}
v1.erase(v1.begin());//{2}
cout<<v1.size();// 1
v1.clear();
cout<<v1.size();// 0
cout<<v1.empty();// 1
```
## 備註
>[name=Peter Wang]
>[time=Tue, Aug 31, 2021 2:08 PM]