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