{%hackmd theme-dark %}
# Vector
## STL container
---
## 什麼是STL
---
## 什麼是Vector
---
## Vector怎麼用
---
## 標頭檔
----
```cpp=
#include<vector>
using namespace std;
```
----
## 宣告 (vector::vector)
----
```cpp=
vector<int> a(5);
vector<double> b(7,0);
vector<long long int> c;
vector<int> v{1, 5, 4, 2, 3};
```
----
## 存取內容物 (vector::operator[])
----
```cpp=
vector<int> v(5, 1);
v[1] = 5;
v[2] += v[1];
cout << v[2] << endl;
//result: 6
```
----
## vector::at
----
```cpp=
vector<int> v(5, 1);
v.at(1) = 5;
v.at(2) += v.at(1);
cout << v.at(2) << endl;
```
----
## vector::push_back
----
```cpp=
vector<int> v(5, 1);
v.push_back(7);
cout << v[5] << endl;
//result: 7
```
----
## vector::pop_back
----
```cpp=
vector<int> v(5, 0);
v.pop_back();
cout << v[4] << endl;
//result: 0
cout << v.at(4) << endl;
//result: terminate called after throwing an instance of 'std::out_of_range'
//what(): vector::_M_range_check: __n (which is 4) >= this->size() (which is 4)
```
----
## vector::size
----
```cpp=
vector<int> v(5, 0);
cout << v.size() << endl;
//result: 5
```
----
## vector::empty
---
```cpp=
vector<int> v;
cout << v.empty() << endl;
//result: 1
```
---
## vector::front
----
```cpp=
vector<int> v{1, 5, 4, 2, 3};
cout << v.front() << endl;
//result: 1
```
----
## vector::back
----
```cpp=
vector<int> v{1, 5, 4, 2, 3};
cout << v.back() << endl;
//result: 3
```
---
# Iterator
---
## iterator是什麼
---
## iterator用在哪裡
---
## 宣告
----
```cpp=
vector<int>::iterator i;
```
---
## 用法
----
## vector::begin
## vector::end
----
```cpp=
vector<int> v{1, 5, 4, 2, 3};
vector<int>::iterator i = v.begin();
while (i != v.end())
cout << *i++ << ' ';
cout << endl;
//result: 1 5 4 2 3
```
----
## auto
----
```cpp=
vector<int> v{1, 5, 4, 2, 3};
for (auto i = v.begin();i != v.end();i++)
cout << *i << ' ';
cout << endl;
```
----
## range_based_for
----
```cpp=
vector<int> v{1, 5, 4, 2, 3};
for (auto& i : v)
cout << i << ' ';
cout << endl;
```
----
```cpp=
int v[]={1, 5, 4, 2, 3};
for(auto& i : v)
cout << i << ' ';
cout << endl;
```
{"metaMigratedAt":"2023-06-15T05:45:57.621Z","metaMigratedFrom":"YAML","title":"Vector","breaks":true,"slideOptions":"{\"spotlight\":{\"enabled\":true}}","contributors":"[{\"id\":\"e8edfe24-eef8-448f-beff-2798a40d21cd\",\"add\":2264,\"del\":83}]"}