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

List容器(上)实战探索解析

前言:链表作为基础数据结构,凭借非连续存储特性在频繁插入/删除时具有O(1)优势,但牺牲了随机访问性能。本文将剖析std::list的内存模型和迭代器机制,对比其他STL容器性能,并通过代码示例演示其适用场景与优化策略,帮助开发者掌握这一经典结构的现代C++实现精髓。

目录

List的介绍

List实例化

尾插元素

访问元素

指定位置前插入

指定位置删除

排序

(升序)

(降序)

拼接

去重

反转


List的介绍

List也是C++标准模板库(STL)中的一种容器,它的内存存储特点与string、vector不同,它的存储不是连续的,List将元素存储在不连续的内存中,通过指针连接前一个节点和后一个节点。综合来说:就是另一种vector:只是内存存储变成了不连续。

List实例化

list<类型> 就是它的数据类型,后面跟上变量名即可,例如:

//list实例化
list<int> V{ 1,2,3,4,5 };

尾插元素

使用和之前的两个容器string与vector一样,如下:

//list实例化
list<int> V;
//尾插元素
V.push_back(1);
V.push_back(2);
V.push_back(3);

访问元素

在C++中支持迭代器的容器那就支持auto,而不支持迭代器的容器很少:

stack      queue     priority_queue

所以我们可以通过迭代器去访问元素,例如:

//迭代器读\写
auto it = V.begin();
while (it !=  V.end())
{cout << *it << " ";it++;
}
cout << endl;
//auto的底层就是迭代器
for (auto e : V)
{cout << e << " ";
}
cout << endl;

指定位置前插入

//指定位置前插入
V.insert(V.begin(), 5);

指定位置删除

//指定位置删除
V.erase(V.begin());

注意:使用erase之后,如果不接收返回值,那么迭代器就会失效。

排序

(升序)

List的排序属于稳定排序(n logn)

v.sort();

(降序)

V.sort(greater<int>());

拼接

拼接支持:整体拼接、单个元素拼接、范围拼接,具体的我们实战的时候再去了解

拼接我们在合成多个链表时可以使用,比如:先拼接多个链表再用排序,这样就实现了整体有序

整体拼接:

//拼接V2在V1的末尾
V1.splice(V1.end(), V2);

去重

去重的前提是元素已经有序

V2.unique();

反转

V2.reverse();

注意:

pos找到的是5的位置,而reverse翻转的是“闭区间,开区间”的元素,也就是0~4。左闭右开。

虽然对于 list  属于非连续的存储,我们还是可以使用 ++ ,这是因为支持了运算符重载,++ 的本质是 ->next,比如我们获取 pos 位置的下一个地址应该用 ++ 而不是 +1

http://www.dtcms.com/a/419204.html

相关文章:

  • 旅游做的视频网站二手网站排名
  • 灯带富晟 HID发收 源码 C# 三色灯源码和演示 C++
  • 怎么建设自己的论坛网站wordpress修改footer
  • Python 中四种高级特征缩放技术详解:超越标准化的数据预处理
  • TypeScript语法(类型注解:、类型断言as、联合类型|、类型守卫typeof、交叉类型、类型别名type、类型保护is)
  • 做网站时版权怎么写新型网络营销推广方式
  • 机器学习——朴素贝叶斯详解
  • 2025汽车芯片有哪些看点,将会带来哪些黑科技?
  • 管道机器人(in-pipe / in-line)避障
  • 建设监理有限责任公司网站怎么做微信点击网站打赏看片
  • LeetCode:79.跳跃游戏Ⅱ
  • 【FPGA 开发分享】如何在 Vivado 中使用 PLL IP 核生成多路时钟
  • Jupyter Notebook 两种模式:编辑模式 命令模式
  • 网站首页结构国际新闻最新消息今天 新闻
  • 网站建设投标文档阿里云市场网站建设
  • 前端用什么开发工具?常用前端开发工具推荐与不同阶段的选择指南
  • web核心—Tomcat的下载/配置/mavenweb项目创建/通过mavenweb插件运行web项目
  • 强化学习 持续任务
  • 数据集制作--easy-dataset
  • 学校网站管理方案做网站需要哪些手续
  • 大连建设工程网站惠州建设集团公司网站
  • 中国城市市政公用设施水平数据(1990-2022年)
  • 【算法笔记】二叉树递归解题套路及其应用
  • 洋气的传媒公司名字永州seo快速排名
  • 充电桩智能升级方案之微波雷达模块WT4101A-C04
  • 1、Lombok入门与环境配置:理解Lombok作用、配置IDE与构建工具
  • 【PostgreSQL内核学习:哈希聚合(HashAgg)执行流程与函数调用关系分析】
  • 选择邯郸网站建设电商网站如何备案
  • 易旅游网站建设东莞有哪些做推广的网站
  • [算法练习]第三天:定长滑动窗口