STL中list的介绍

发布时间:2023年12月18日

介绍

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类似于双向带头循环链表,因此插入操作不会导致迭代器失效,只有在删除的时候才会失效,并且只有指向该节点的迭代器失效,其他迭代器并不会受到影响

文章来源:https://blog.csdn.net/ye_yumo/article/details/134979990
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。