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链表的常见用法及函数相关推荐

  1. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

  2. <c++STL>: map的常见用法

    map底层实现: 复习一波HashMap底层实现原理解析_CalvinXCui的博客-CSDN博客 包含头文件: #include<map> !map插入元素后自动按key值大小排序(见例 ...

  3. 【JavaScript:语法】javascript函数定义以及常见用法

    转载:javascript函数定义以及常见用法 javascript函数定义以及常见用法 我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头 ...

  4. STL剖析(二):容器底层数据结构及常见用法

    一.概述 本文主要聚焦于STL容器,STL完整的容器分类体系如下所示,下文将逐一对各个容器底层的数据结构以及常见用法进行介绍. 测试环境:Ubuntu 22.04 g++ 11.3.0 二.顺序容器 ...

  5. Java集合Collection与List的关系、常见用法

    关系树 [java] view plain copy print? ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快 ...

  6. upperbound找不到_关于lower_bound( )和upper_bound( )的常见用法

    头文件:#include lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begi ...

  7. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  8. python字符串find函数-python常见字符串处理函数与用法汇总

    本文实例讲述了python常见字符串处理函数与用法.分享给大家供大家参考,具体如下: 1.find 作用:在一个较长字符串中查找子串.返回子串所在位置的最左端索引,如果没有找到则返回-1.如果指定 b ...

  9. python六:常见数据类型以及常见用法

    bool 布尔值 # 在bool中 0,()(空元祖),[](空列表),{}(空字典),None,""(空字符串) 都是False int 整形 float 浮点型 str 字符串 ...

最新文章

  1. 厉害了!写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了...
  2. 进入计算机用户名和密码,巧用U盘进入设密码系统免于输入用户名和登录密码...
  3. python日志模块备份_Python Logging模块 输出日志颜色、过期清理和日志滚动备份
  4. 苹果笔记本上的qq 查看看自己的QQ空间 ,打开多个QQ
  5. python加入小学课本_Python走进小学教材
  6. 火狐版Idm配合油猴使用教程
  7. php开发人脸识别流程,php使用face++实现一个简单的人脸识别系统
  8. CKEditor配置及使用
  9. 百度mip推送工具_链接提交主动推送(实时)、熊掌号天级/周级提交、MIP提交
  10. ps人像妆面修调教程
  11. <郝斌C语言自学教程>
  12. Spring-boot启动出现:“if you put a @ComponentScan in the default package by mistake” 错误。
  13. Japan POJ - 3067
  14. 非酒精性脂肪性肝炎潜在治疗靶点及药物研究进展
  15. InputStream读取数据
  16. JSON格式化工具下载
  17. 小技巧——如何为foxmail中的文字编辑超链接
  18. J2EE、J2SE、J2ME的区别
  19. Elasticsearch快照备份
  20. java毕业生设计在线课堂辅助系统计算机源码+系统+mysql+调试部署+lw

热门文章

  1. 空压机远程监测及控制系统
  2. ASM、Javassist、JDK、CGLIB
  3. shellcode免杀;CS上线;获取微信聊天记录
  4. 逻辑学导论第11版第一章
  5. 23种设计模式 - C++实现
  6. C++设计模式实例讲解
  7. 开整水果爱疯开发 - Ubuntu 10.10 下搭建 Objective-c 编译环境搭建
  8. 计算机毕业设计Java在线拍卖系统(源码+系统+mysql数据库+Lw文档)
  9. 【重要】有三AI技术专栏作者邀请,5大权益助力共同成长
  10. 写完这段代码,就被开除了……