当前位置: 首页 > article >正文

【C++】STL——list的使用

目录

💕1.带头双向链表List

💕2.list用法介绍

💕3.list的初始化 

💕4.size函数与resize函数

💕5.empty函数 

💕6.front函数与back函数 

💕7.push_front,push_back,pop_front,pop_back函数 

💕8.begin函数,end函数,rbegin函数,rend函数 

💕9.insert函数,erase函数 

💕10.swap函数 

💕11.clear函数

💕12.sort排序链表

💕13.remove函数

💕14.完结


独帜入渊深未知  身似浮萍命难持

(最新更新时间——2025.2.5)

💕1.带头双向链表List

在C++中,List是一种带头双向链表

 💦 list 容器的优点
 高效的插入和删除:由于std::list是基于带头双向循环链表实现的,插入和删除操作在任意位置都具有常数时间复杂度O(1),不需要移动其他元素。这使得std::list在需要频繁插入和删除元素的场景下非常高效。
稳定的迭代器:在std::list中进行插入和删除操作不会使得迭代器失效。这意味着在插入或删除元素后,仍然可以继续使用之前获取的迭代器进行遍历和操作。
动态内存管理:std::list可以动态调整大小,根据需要分配和释放内存。这使得std::list能够有效地处理大量元素的情况,而不会浪费过多的内存空间。


 💦 list 容器的缺点
低效的随机访问:由于std::list的存储结构是带头双向循环链表,访问元素时需要从头或尾开始遍历链表,因此在列表中进行随机访问的效率较低。获取特定位置的元素需要遍历链表,时间复杂度为O(n),其中n是元素的总数量。
占用额外内存:相较于其他容器,std::list在存储上需要额外的指针来维护链表结构,因此在存储大量元素时,它可能占用更多的内存空间。
迭代器不支持指针算术:std::list的迭代器不支持指针算术运算,无法像指针那样直接进行加减操作,这限制了一些操作的灵活性。

💕2.list用法介绍

 list的用法与vector是类似的,具体如下:

接下来进行逐一讲解使用->:

💕3.list的初始化 

list的初始化与vector一样,写法如下:

#include<iostream>
using namespace std;
#include<list>
int main()
{
	//初始化
	list<int> l1 = { 2,4,5 };
	list<double> l2 = { 4.5,5.5 };

	list<string> s1 = { "hello","world" };
	list<char> c1 = { 'x','p' };

}

💕4.size函数与resize函数

 size函数可以返回链表的有效值个数

resize函数可以更改链表的有效值个数,并且“可以”进行初始化新开辟的size值

这些都与vector的使用是一样的,不懂的可以去看我的这篇文章

vector的使用详解


链表中没有capacity函数的使用,因为链表都是创建一个开辟一个,并不会一次开辟一堆空间


💕5.empty函数 

empty函数用来判断链表是否为空,返回值的类型是bool,如果为空返回true,否则返回false


💕6.front函数与back函数 

front函数用于返回链表的第一个有效元素

bakc函数用于返回链表的最后一个有效元素


这里简单直接展示代码了

💕7.push_front,push_back,pop_front,pop_back函数 

push_front用于链表的头插         push_back用于链表的尾插

pop_front用于链表的头删吗        pop_back用于链表的尾删


这里也简单,代码例题如下->:

💕8.begin函数,end函数,rbegin函数,rend函数 

这里的使用或者概念与顺序表完全相同,不做展示

文章跳转:vector的使用详解

💕9.insert函数,erase函数 

这里的使用或者概念与顺序表完全相同,不做展示

文章跳转:vector的使用详解

💕10.swap函数 

swap函数可以交换两个链表之间的内容

它底层的实现是通过交换头节点,因为头结点一交换后面的内容也等于交换了


代码示例->:

💕11.clear函数

clear函数用于将链表置为空链表


用法如下->:

💕12.sort排序链表

sort排序可以将链表排序为升序或者降序

代码如下->:

如果想排降序,那就加入greater函数

💕13.remove函数

功能描述:

remove 函数会遍历整个链表,将所有值等于 value 的元素从链表中移除,并释放这些元素所占用的内存。移除元素后,链表的长度会相应减少。


💕14.完结


http://www.kler.cn/a/534359.html

相关文章:

  • Java进阶笔记(中级)
  • 4 前端前置技术(中):node.js环境
  • 深度求索DeepSeek横空出世
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.29 NumPy+Scikit-learn(sklearn):机器学习基石揭秘
  • 正态分布和标准正态分布区别与联系(复习)
  • 昆仑万维Java开发面试题及参考答案
  • 【数据结构】链表应用1
  • java中反射(Reflection)的4个作用
  • [Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测
  • 我的鸿蒙学习之旅:探索万物互联的新宇宙
  • 产品经理的人工智能课 02 - 自然语言处理
  • 穷举vs暴搜vs深搜vs回溯vs剪枝系列一>黄金矿工
  • 移动机器人规划控制入门与实践:基于navigation2 学习笔记(一)
  • 【Uniapp-Vue3】从uniCloud中获取数据
  • Vue全流程--Vue2组件的理解第二部分
  • Docker深度解析:Docker Compose
  • 巧用 DeepSeek,让 Excel 数据处理更高效
  • Springboot项目编写测试单元步骤
  • 北大AGI与具身智能评估新范式!Tong测试:基于动态具身物理和社会互动的评估标准
  • 【go语言】protobuf 和 grpc
  • mixin
  • STM32 串口收发数据包
  • 基于springboot+vue的青少年心理健康教育网站的设计与实现
  • Qt跨屏窗口的一个Bug及解决方案
  • FRP通过公网IP实现内网穿透
  • 日期选择控件,时间跨度最大一年。