- 迭代器失效:erase会导致失效,resize()把list的长度减少,可能就会失效..解决方式就是用之前重新赋值
- 底层为非连续空间,erase之后当前迭代器失效,但是后面的迭代器不会失效
- list的构造和析构
- list( ) | list(size_t n,const T& value=T()) | list(const list<T>& L) | list(Iterator first,Iterator last) | list<int> L{1,2,3,5};
- 迭代器
- begin()/end() | rbegin()/rend() | c++11增加了cbegin()/cend() | rcbegin()/rcend()
- 元素访问
- front()/back() 如果要访问list中特定的元素,可以用STL提供的find算法,list和vector没有find算法
- 因为list和vector中的元素都是线性的结构,找一个元素无非就是把元素里的东西遍历一遍,所以就直接用全局的find,而且全局的find支持连续的空间遍历和链式的空间遍历
- 修改
- push_back() pop_back() push_front() pop_front()
- iterator insert(iterator pos,const T& value)/void insert(iterator pos ,size_t n,const T& value)/void insert(iterator pos,Tterator first,Iterator,last)/
- iterator erase(iterator pos) / iterator erase(iterator firsr,iterator last) void clear()/void swap(list<T>&l)
- 其他
- void remove(const T& value) void remove_if(函数指针)把list里满足条件的全删除
- void unique()去重,有序的情况下才会去重 void sort()排序