* create
```
#include <array>
using namespace std;
int main() {
array<int,3> a; // default constructor
array<int,3> b(a); // copy constructor
array<int,3> c(move(a)); // move constructor
array<int,3> d{1,2,3}; // initializer list constructor
//array<int,3> e(3,1); // array is aggregator, has no fill constructor
//array<int,3> f(b.begin(),b.end()); // array is aggregator, has no range constructor
array<int,3>* g = new array<int,3>{1,2,3}; // new operator
delete g;
}
```
* iterator
```
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int,6>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 (N/A)
* change
```
#include <iostream>
#include <array>
using namespace std;
int main ()
{
array<int,5> a{1,2,3,4,5};
array<int,5> a1{1,2,3,4,5};
*a.begin()=2;
a[0]=1;
a.at(1)=2;
a.front()=3;
a.back()=4;
a.data()[1]=5;
a.fill(1);
a.swap(a1);
for (auto &i:a)
cout<<i<<";";
cout<<endl;
}
```
* query
```
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 10> a{};
a.fill(1);
cout<<a[2]<<","<<a.at(3)<<","<<get<4>(a)<<","<<a.data()[1]<<endl;
cout<<a.front()<<","<<a.back()<<endl;
cout<<a.size()<<","<<a.max_size()<<","<<a.empty()<<endl;
}
```
* delete (N/A)