1.list容器的概念
list容器是一个双向链表。相比于vector容器,list每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何元素的插入或移除,list永远是常熟时间。
2.list容器的迭代器
list迭代器可进行递增、递减、取值、成员存取操作。插入和删除不会使原有的list迭代器失效。
3.list的数据结构
list是一个循环的双向链表。
4.list常用API
4.1list构造函数
list<T> lis;默认构造
list(beg,end);将[beg,end)区间中的元素拷贝给本身
list(n,ele)将n个ele拷贝给本身
list(const list& l)拷贝构造
4.2插入和删除操作
push_back(ele)尾插
pop_back()尾删
push_front(ele)头插
pop_front()头删
insert(pos,ele)指定位置插入,返回新数据的位置
insert(pos,n,ele)在pos处插入n个ele,无返回值
insert(pos,beg,end)在pos位置插入[beg,end)区间的数据,无返回值
clear()清空数据
erase(beg,end)删除[beg,end)间的所有数据
erase(pos)删除pos位置数据
remove(ele)删除容器中所有与ele值匹配的元素
4.3list大小操作
size();返回容器元素个数
empty();判断容器是否为空
resize(num),重置重启大小,若容器变长,则以默认值填充,若容器变短,则删除超出容器长度的元素
resize(num,ele)重置容器大小,若容器变长,则以ele填充,若容器变短,则超出容器长度的元素被删除
4.4list赋值操作
assign(beg,end),将[beg,end)间中的数据拷贝给本身
assign(n,ele)将n个ele拷贝给本身
list& operator=(const list& lis)重载=
swap(lst)将lst与本身元素互换
4.5list容器的存取
front()返回第一个元素
back()返回最后一个元素
4.6list反转排序
reserve()链表反转
sort()链表排序