* create
```
#include <vector>
using namespace std;
int main() {
vector<int> a; // default constructor
vector<int> b(a); // copy constructor
vector<int> c(move(a)); // move constructor
vector<int> d{1,2,3}; // initializer list constructor
vector<int> e(3,1); // fill constructor
vector<int> f(a.begin(),a.end()); // range constructor
vector<int>* g = new vector<int>{1,2,3}; // new operator
delete g;
}
```
* iterator
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int>c{{1,2,3,4,5,1}};
for (auto i = c.begin(); i != c.end(); ++i)
cout << *i << " ";
cout<<endl;
for (auto i = c.cbegin(); i != c.cend(); ++i)
cout << *i << " ";
cout<<endl;
for (auto i = c.rbegin(); i != c.rend(); ++i)
cout << *i << " ";
cout<<endl;
for (auto i = c.crbegin(); i != c.crend(); ++i)
cout << *i << " ";
cout<<endl;
}
/*
1 2 3 4 5 1
1 2 3 4 5 1
1 5 4 3 2 1
1 5 4 3 2 1
*/
```
* add
```
#include <vector>
#include <iostream>
using namespace std;
struct Foo
{
Foo(int n, double x) {}
};
int main() {
vector<int> v{1,2,3,4,5};
v.push_back(1);
v.insert(v.begin()+2,4);
for(auto &i:v)
cout<<i<<",";
cout<<endl;
std::vector<Foo> f;
f.emplace(f.begin(), 42, 3.1416);
f.insert(f.begin(), Foo(42, 3.1416));
}
```
* change
```
#include <vector>
#include <iostream>
using namespace std;
void p(vector<int>& a) {
for(auto& i:a) cout<<i<<";";
cout<<endl;
}
int main() {
vector<int> v{};
vector<int> w{1,2,3,4,5};
v.assign(10, 11);
v[2]=3;
v.swap(w);
v.resize(30); // size will be 30
v.reserve(50); // capacity will be 50
v.shrink_to_fit(); // capacity will be 30
cout<<v.capacity();
}
```
* query
```
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v{1,2,3,4,5};
cout<<v[1]<<","<<v.at(1)<<","<<*v.data()+1<<endl;
cout<<v.front()<<","<<v.back()<<","<<v.size()<<","
<<v.max_size()<<","<<v.capacity()<<","<<v.empty()<<endl;
}
```
* delete
```
#include <vector>
using namespace std;
int main() {
vector<int> v{1,2,3,4,5};
v.pop_back();
v.erase(v.begin()+2);
v.clear();
}
```