STL中list的介绍

538 words

介绍

list是一个类似于双向带头循环链表的序列式容器,是一个可以在常数时间范围内任意位置进行插入删除的容器。list与forward_list十分相似,但是forward_list本质上是一个单链表,因此也更简单高效。list不支持随机访问,需要通过从头部或者尾部迭代到该位置,其次list的每个节点不仅仅只有数据内容,还包含了指向前后位置的关联信息

接口

构造函数

函数 说明
list(size_type n, const value_type& val = value_type()) 构造n个val
list() 空list
list(const list& x) 拷贝构造
list(InputIterator first, InputIterator last) 区间构造

迭代器

这里迭代器的结构比较复杂,暂时将迭代器理解为指针即可

函数 说明
begin,end 返回第一个元素的迭代器,返回最后一个元素下一个位置的迭代器
rbegin,rend 返回最后一个元素的迭代器,返回第一个元素前一个位置的迭代器
  1. begin和end为正向迭代器,++操作之后迭代器向后移动
  2. rbegin和rend为反向迭代器,++操作之后迭代器向前移动

内存

函数 说明
empty 判空
size 返回list中有效节点的个数

元素获取

函数 说明
front 返回list中第一个节点中值的引用
back 返回list中最后一个节点中值的引用

增删查改

函数 说明
push_front 首元素之前插入val的元素
pop_front 删除首元素
push_back 尾元素之后插入val的元素
pop_back 删除尾元素
insert 在pos位置插入val
erase 删除pos的元素
swap 交换两个list的元素
clear 清空list中的有效元素

list的迭代器失效

这里的迭代器类似于野指针,与vector不同的是,list类似于双向带头循环链表,因此插入操作不会导致迭代器失效,只有在删除的时候才会失效,并且只有指向该节点的迭代器失效,其他迭代器并不会受到影响

Comments