1.初始化
list<int> lst1; //创建空list
list<int> lst2(5); //创建含有5个元素的list
list<int> lst3(3,2); //创建含有3个元素的list
list<int> lst4(lst2); //使用lst2初始化lst4
list<int> lst5(lst2.begin(),lst2.end()); //同lst4
list<int> lst6{1,2,3,4,5}; //使用initializer_list初始化
int arr[7]={1,2,3,4,5,9,8}; list<int> lst7(arr, arr+7); //从数组中初始化
2.常用操作
lst1.push_back(2); //在list的末尾添加一个元素
lst1.push_front(2); //在list的头部添加一个元素
lst1.pop_back(); //删除最后一个元素
lst1.pop_front(); //删除第一个元素
lst1.emplace_back(2); //在list的末尾添加一个元素。在放置类或结构体时比push_back更高效,传入构造类所需参数即可
lst1.emplace_front(2); //在list的头部添加一个元素。并不需要传入构造好的对象,所以比push_back()少调用一次移动构造函数
lst1.emplace(lst1.begin(), 2); //在list的头部添加一个元素,也可以在参数设置lst2.begin()给lst2添加元素
lst1.back(); //返回最后一个元素
lst1.front(); //返回第一个元素
lst1.insert(lst1.begin(), 5); //在第一个元素的位置插入5。list迭代器没有+方法,但是有++
lst1.insert(lst1.begin(), 5, 1); //在第一个元素之后插入5个1
lst1.insert(lst1.end(), arr, arr + 2); //从数组元素中插入值到list中
lst1.insert(lst1.end(), vec.begin(), vec.begin() + 2); //从数组元素中插入值到list中
lst1.empty(); //如果list是空的则返回true
lst1.size(); //返回list中的元素个数
lst1.erase(lst1.begin()); //删除第一个元素,返回指向第二个元素的迭代器
lst1.erase(lst1.begin(), it); //删除第一到it的元素,返回指向it元素的迭代器
lst1.remove(3); //从list删除元素3
lst1.remove_if([](int x){ return x>3; }); //删除list中大于3的元素
lst1.resize(10); //改变list的大小,多则删,少则添
lst1.reverse(); //把list的元素倒转
lst1.sort(); //给list排序
list<int>::iterator it = lst1.begin(); //返回指向第一个元素的迭代器
list<int>::reverse_iterator r_it = lst1.rbegin(); //返回逆序后第一个元素的迭代器
list<int>::const_iterator c_it = lst1.begin(); //返回常量迭代器,表示指向的元素不能变,但是指针的位置可以变
list<int>::const_reverse_iterator cr_it = lst1.crbegin(); //返回逆序后第一个元素的迭代器
lst1.clear(); //删除所有元素
3.不常用操作
lst1.assign(3, 5); //给list赋值3个5
lst2.assign(lst1.begin(), lst1.end()); //将list1的元素赋给list2
std::allocator<int> allc = lst.get_allocator(); //返回list的配置器
lst1.swap(lst2); //交换两个list
lst1.max_size(); //返回list能容纳的最大元素数量
lst1.splice(lst1.begin(), lst2); //在lst1第一个位置插入lst2,lst2的内容即被销毁
lst1.splice(lst1.begin(), lst2, lst2.begin()); //在lst1第一个位置插入lst2第一个元素
lst1.splice(lst1.begin(), lst2, lst2.begin(), lst2.end()); //在lst1第一个位置插入lst2第一个元素至最后一个元素
lst1.merge(lst2); //合并两个有序list
lst1.unique(); //删除与当前元素相等的相邻元素
lst1.unique([](int x, int y){ return std::abs(x-y) <= 1; }); //删除与当前元素差值小于等于1的相邻元素
list<list<int>> matrix(3, list<int>(5)); //二维list
4.遍历
for (list<int>::iterator it = lst.begin(); it != lst.end(); ++i) {
cout << *i << " ";
}
for(auto i : lst) cout << i << " ";
for_each(lst.begin(), lst.end(), [](int x) {cout << x << " ";});
5.算法
accumulate(lst.begin(), lst.end(), 0); //累加
advance(it,5); //将it迭代器移动到第6个元素的位置
find(lst.begin(), lst.end(), 10); //在list中查找10.成功则返回位置,失败返回end()
distance(lst.begin(), lst.end()); //返回lst之间的距离长度