list 是双向链表,允许快速的insert 和 delete, 但是随机访问比较慢。
0 准备
#include<list>
1 initialize & assignment
list<type> li
2. operator
2.1 add
li.push_front(); //从头插入
li.push_back(); //从尾插入
INSERT
list<int> li(3,6);
li.insert(++li.begin(),3,8);
res: 688866
2.2 delete
li.pop_front(); //从头删除
li.pop_back(); //从尾删除
li.clear() //清空
li.erase(li.begin()) //删除头结点
2.3 query
li.empty()
li.size() //返回元素个数
li.max_size() //返回容量
li.front(); //返回头元素
li.back(); //返回尾元素
2.4 change
//删除相邻的相同元素
UNIQUE
list<int> li(3,6);
li.insert(++li.begin(),3,8);
li.unique();
res: 686
//元素倒序
RESERVE
li.reserve();
3. 常见用法
3.1 sort
li.sort();
//默认是升序,从小到大
3.2 traverse
list<int> li(5);
for(auto it=li.begin();it!=li.end();it++)
cout << *it << endl;
res: 00000
//倒序traverse
for (auto it = li.rbegin(); it != li.rend(); it++)
cout << *it << endl;
3.3