# Vector、Sort [C++]
## 常見屬性
`vector.size()`
`vector.empty()` 檢視vector是否為空
`vector.front()` 回傳vector第一個元素的值
`vector.back()` 回傳vector最後一個元素的值
`vector.push_back()` 新增元素至vector的尾端
`vector.pop_back()` 刪除vector最後一個元素
`vector.insert()` 插入一個或多個元素至vector的任意位置
`vector.erase()` 刪除vector中的一個或多個元素
`vector.clear()` 清空所有元素
`vector.begin()` 回傳第一個值的位址
`vector.end()` 回傳最後一個值的位址
## 宣告方法
> vector<type> name = {value}
## 範例
```c
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> number = {10, 20, 30};
vector<int> zeros(10); 建立長度為10的vector,初始值為0
vector<int> ones(10, 1); 建立長度為10的vector,初始值為1
vector<int> v2(v1); 等同於vector<int> v2 = v1的意思
number.insert(number.end()-1, 50)
number.insert(number.begin()+3, 2, 40) 在第四個位置插入2個40
sort(number.begin(), number.end()) 排序
```
### 備註
:::info
:bulb: C++ : sort(begin, end, 可再自行加入方法) https://shengyu7697.github.io/std-sort/
python : sort、sorted
:::
## :memo:Note
### ==讀取方式比較==
vector **[ i ]** vs vector.**at(i)**
[ ]operator有可能會出錯,撰寫較嚴肅、安全性較高的程式時使用 at()
### ==iterator(疊代器)介紹==
是一種資料形態,其意義為記憶空間位址,使用方法如指標pointer*
#### Example
假如有一個陣列長這樣
```c
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(int);
# len = 5
int *begin = arr + 0;
int *end = arr + len;
# begin 指向的是 1 那個位置
# end 指向的是 5 後面沒有東西的那個位置
int *ptr;
for(ptr = begin ; ptr != end ; ptr++)
printf("%d", *ptr);
# 1, 2, 3, 4, 5
```
如果用矩陣來表示
```c
#將arr的第一個元素到第五個元素複製給整數向量vec
vector<int> vec(arr, arr+5);
vector<int>::iterator begin = vec.begin();
vector<int>::iterator end = vec.end();
#呼叫iterator
vector<int>::iterator it;
for(it=begin ; it!=end ; it++)
printf("%d", *it);
# 1, 2, 3, 4, 5
```
### 備註
:::info
:bulb: C++的vector實則為python的list,不需再使用array儲存資料。
:::
<br>
###### tags: `C`