* create
```
#include <deque>
using namespace std;
int main() {
deque<int> a; // default constructor
deque<int> b(a); // copy constructor
deque<int> c(move(a)); // move constructor
deque<int> d{1,2,3}; // initializer list constructor
deque<int> e(3,1); // fill constructor
deque<int> f(a.begin(),a.end()); // range constructor
deque<int>* g = new deque<int>{1,2,3}; // new operator
delete g;
}
```
* iterator
```
#include <iostream>
#include <deque>
using namespace std;
int main() {
deque<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 <iostream>
#include <deque>
using namespace std;
int main ()
{
deque<int> dq;
dq.push_back(1);
dq.push_front(2);
auto it = dq.end();
dq.insert(it, 3);
for (auto &i:dq)
cout<<i<<",";
cout<<endl;
}
```
* change
```
#include <iostream>
#include <deque>
using namespace std;
int main ()
{
deque<int> a{1,2,3,4,5};
deque<int> a1{1,2,3,4,5};
*a.begin()=2;
a[0]=1;
a.at(1)=2;
a.front()=3;
a.back()=4;
a1.assign(3, 5);
a.swap(a1);
for (auto &i:a)
cout<<i<<";";
cout<<endl;
}
```
* query
```
#include <iostream>
#include <deque>
using namespace std;
int main() {
deque<int> a{};
a.assign(10, 1);
cout<<a.front()<<","<<a.back()<<endl;
cout<<a.max_size()<<","<<a.empty()<<endl;
}
```
* delete
```
#include <iostream>
#include <deque>
using namespace std;
int main() {
deque<int> a{};
a.assign(10, 1);
a.pop_front();
a.pop_back();
a.erase(a.begin());
a.clear();
cout<<a.empty()<<endl;
}
```