C++STL——List链表的常见用法及函数
List
链表也是个常用的数据结构,它是一种物理
存储单元上非连续非顺序的存储结构,数据元素的逻辑顺序
是通过链表的指针
实现的。
链表由一系列结点组成,每个结点包含两个部分:数据以及指向下一结点的指针。
而标准数据库STL中的List是双向链表
,既可以指向下一个结点也可以指向上一个结点,这样使得正向遍历和反向遍历都很方便。也可以快速的进行插入和删除操作。图片来自
一、List的声明/定义
list<数据类型> 链表名称,例:list<int> list1;
二、List的遍历/访问
迭代器法
list<数据类型>::iterator 迭代器名称,例:list<int>::iterator iter1;
常用函数
iter1=list1.begin(); //返回指向容器中第一个元素的迭代器
iter1=list1.end(); //返回容器中最后一个元素的迭代器
iter1=list1.rbegin(); //返回指向容器中最后一个元素的反向迭代器
iter1=list1.rend(); //返回容器中第一个元素的反向迭代器
注:begin()
和rbegin()
是返回指向元素的迭代器,而end()
和rend()
是返回元素的迭代器,也就是说list1.end()
和list1.rend()
返回指向最后一个元素的下一个元素的迭代器,具体用法如下:
list<int> a;
a.push_front(8);
a.push_front(6);
a.push_front(3);
list<int>::iterator l1=a.begin();
for(l1=a.begin();l1!=a.end();l1++){cout<<*l1<<" ";
}
/*
结果(因为在插入元素时,用的是头插法):
3 6 8
*/
三、List类常见的类方法
例:list<int> list1;
1 添加元素
int x1=8;
list1.push_front(x1); //在头部添加
list1.push_back(x1); //在尾部添加
list1.insert(pos,elem); //在pos(迭代器)位置插elem元素的拷贝,返回新数据的位置。
list1.insert(pos,n,elem); //在pos(迭代器)位置插入n个elem数据,无返回值。
list1.insert(pos,beg,end); //在pos(迭代器)位置插入[beg,end)区间的数据,无返回值。
2 删除元素
list1.pop_front(); //删除头部元素
list1.pop_back(); //删除尾部元素
list1.clear(); //删除所有元素
list1.erase(begin,end); //删除[begin,end)区间(迭代器)的数据,返回下一个数据的位置。
list1.erase(pos); //删除pos(迭代器)位置的数据,返回下一个数据的位置。
list1.remove(elem); //删除容器中所有与elem匹配的元素。
3 List容量
list1.size(); //返回元素个数
list1.max_size(); //返回对象最大允许容量
list1.empty(); //得到容器是否为空,为空返回true(1),否则返回false(0)
list1.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
list1.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
4 其他
list1.unique(); //去重
list1.merge(); //合并两个有序链表
list1.sort(); //单链表排序
list1.reversr(); //单链表的逆置
C++STL——List链表的常见用法及函数相关推荐
- 【c++】标准模板库STL入门简介与常见用法
一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...
- <c++STL>: map的常见用法
map底层实现: 复习一波HashMap底层实现原理解析_CalvinXCui的博客-CSDN博客 包含头文件: #include<map> !map插入元素后自动按key值大小排序(见例 ...
- 【JavaScript:语法】javascript函数定义以及常见用法
转载:javascript函数定义以及常见用法 javascript函数定义以及常见用法 我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头 ...
- STL剖析(二):容器底层数据结构及常见用法
一.概述 本文主要聚焦于STL容器,STL完整的容器分类体系如下所示,下文将逐一对各个容器底层的数据结构以及常见用法进行介绍. 测试环境:Ubuntu 22.04 g++ 11.3.0 二.顺序容器 ...
- Java集合Collection与List的关系、常见用法
关系树 [java] view plain copy print? ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快 ...
- upperbound找不到_关于lower_bound( )和upper_bound( )的常见用法
头文件:#include lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begi ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
- python字符串find函数-python常见字符串处理函数与用法汇总
本文实例讲述了python常见字符串处理函数与用法.分享给大家供大家参考,具体如下: 1.find 作用:在一个较长字符串中查找子串.返回子串所在位置的最左端索引,如果没有找到则返回-1.如果指定 b ...
- python六:常见数据类型以及常见用法
bool 布尔值 # 在bool中 0,()(空元祖),[](空列表),{}(空字典),None,""(空字符串) 都是False int 整形 float 浮点型 str 字符串 ...
最新文章
- 厉害了!写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了...
- 进入计算机用户名和密码,巧用U盘进入设密码系统免于输入用户名和登录密码...
- python日志模块备份_Python Logging模块 输出日志颜色、过期清理和日志滚动备份
- 苹果笔记本上的qq 查看看自己的QQ空间 ,打开多个QQ
- python加入小学课本_Python走进小学教材
- 火狐版Idm配合油猴使用教程
- php开发人脸识别流程,php使用face++实现一个简单的人脸识别系统
- CKEditor配置及使用
- 百度mip推送工具_链接提交主动推送(实时)、熊掌号天级/周级提交、MIP提交
- ps人像妆面修调教程
- <郝斌C语言自学教程>
- Spring-boot启动出现:“if you put a @ComponentScan in the default package by mistake” 错误。
- Japan POJ - 3067
- 非酒精性脂肪性肝炎潜在治疗靶点及药物研究进展
- InputStream读取数据
- JSON格式化工具下载
- 小技巧——如何为foxmail中的文字编辑超链接
- J2EE、J2SE、J2ME的区别
- Elasticsearch快照备份
- java毕业生设计在线课堂辅助系统计算机源码+系统+mysql+调试部署+lw