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

C++STL系列-04. list和forward_list

C++STL系列-04. list和forward_list

        

核心区别

特性listforward_list
实现方式双向链表单向链表
内存开销每个节点有两个指针(前向和后向)每个节点只有一个指针(前向)
迭代器类型双向迭代器前向迭代器
大小查询有 size() 方法无 size() 方法(需要遍历计算)
反向遍历支持(有 rbegin(), rend())不支持
性能插入删除操作常数时间,但内存开销大内存效率更高,但功能受限

list

#include<iostream>
#include<list>
using namespace std;
void printList(list<int> l) {for (int i : l) {cout << i << " ";}cout << endl;
}
int main() {list<int>alvin(5,3);	//包含5个值为3的元素list<int>alvin1 = {1,2,3,4,5};	//初始化列表alvin1.assign(3,6);	//分配 3 个 值为 6 的元素, 前面的1,2,3,4,5会消失alvin1.push_front(1);	//头部添加元素alvin1.push_back(7);	//尾部添加元素auto it = alvin1.begin();alvin1.insert(it,5);	//指定位置插入元素alvin1.pop_front();	//删除首元素alvin1.pop_back();	//删除尾元素alvin1.erase(it);	//删除指定位置元素alvin1 = {1,2,3,4,5,5,5,6,7,8,9};	//重新填充alvin1.remove(5);	//删除所有等于值的元素. 打印结果 1,2,3,6,7,8,9alvin1.remove_if([](int n) { return n % 2 == 0; }); // 删除满足条件的值,比如所有偶数,打印结果 1,3,7,9alvin1 = {7,7,8,8,9,2,1,9,3,5,4,5,6,6};	alvin1.unique(); //删除连续重复的数  打印结果 7 8 9 2 1 9 3 5 4 5 6alvin1.sort();	//排序 1,2,3,4,5,5,6,7,8,9,9alvin1.merge(alvin);	//合并并且排序alvin1.reverse();	//反转alvin = {55,99,88};alvin1.swap(alvin);	//交换printList(alvin1);return 0;
}

forward_list 常用函数

push_front() - 在首部添加元素

pop_front() - 删除首部元素

insert_after() - 在指定位置后插入元素

erase_after() - 删除指定位置后的元素

before_begin() - 返回第一个元素之前的位置

sort() - 排序

merge() - 合并两个有序链表

splice_after() - 移动元素从一个链表到另一个

reverse() - 反转链表

双链表代码原理
单链表代码原理

文章转载自:

http://OxfaBxWQ.qtqjx.cn
http://AnRqypDZ.qtqjx.cn
http://r6l9XSAA.qtqjx.cn
http://oUbnvMTi.qtqjx.cn
http://7PMlsdKs.qtqjx.cn
http://2ktr6qkf.qtqjx.cn
http://cRoRDqsK.qtqjx.cn
http://Oa7LPheR.qtqjx.cn
http://BinrwkzL.qtqjx.cn
http://d7CiLDz5.qtqjx.cn
http://9hdAi2fo.qtqjx.cn
http://ugLQ1KR7.qtqjx.cn
http://mQNHm62l.qtqjx.cn
http://wDmM1pZz.qtqjx.cn
http://TdDtEd6x.qtqjx.cn
http://yZn30P77.qtqjx.cn
http://ryGRFKbS.qtqjx.cn
http://SqBicwSD.qtqjx.cn
http://6cuYu5en.qtqjx.cn
http://vbyACF35.qtqjx.cn
http://r9UYLNoX.qtqjx.cn
http://864LAHi0.qtqjx.cn
http://qdUrVsth.qtqjx.cn
http://p5BW0dSj.qtqjx.cn
http://CXbh5qdQ.qtqjx.cn
http://4kDPd8WM.qtqjx.cn
http://OHlHTXV9.qtqjx.cn
http://JBbv37NE.qtqjx.cn
http://LhVLSNdh.qtqjx.cn
http://dss26a7Q.qtqjx.cn
http://www.dtcms.com/a/378015.html

相关文章:

  • wpf程序启动居中并且最小化到托盘修复记录
  • 《JVM如何排查OOM》
  • ITP 3.0.0 版本重磅发布:接口测试平台迎来多项重大升级
  • 流式细胞术样本处理全攻略(一):组织、血液、体液制备方法详解
  • 【Ansible】将文件部署到受管主机知识点
  • 3 水平分表
  • ISO20000与IT运维和运营的关系
  • AI生成文本检测数据集:基于不平衡数据集(人类94% vs AI 6%)的高效机器学习模型训练,涵盖ChatGPT、Gemini等LLM生成内容
  • 音视频学习(六十四):avc1 hvc1和hev1
  • JC链客云——项目过程中获得的知识、遇到的问题及解决
  • 新手向:从零理解LTP中文文本处理
  • pyproject.toml 的历史背景和原理
  • vue知识点总结
  • macos arm自动编译x264和x265 Android平台so库
  • 三甲地市级医院数据仓湖数智化建设路径与编程工具选型研究(下)
  • Excel批量处理一列数据---分列功能
  • 从Miniflux 到 NextFlux:一步升级,拥抱现代化阅读体验
  • 机器视觉之图像处理篇
  • Find 命令详解
  • (九)Spring Cloud Alibaba 2023.x:微服务接口文档统一管理与聚合
  • 【C++深学日志】从0开始的C++生活
  • C#---Expression(表达式)
  • DCS控制回路优化:基于WebSocket的实时参数远程调校方法论
  • WebSocket压缩传输优化:机器视觉高清流在DCS中的低延迟方案
  • Java 软件测试(三):Mockito打桩与静态方法模拟解析
  • 大数据与AI:一场“数据盛宴”与“智能大脑”的奇妙邂逅
  • 前端学习之后端java小白(四)之数据库设计
  • 构建高效协作的桥梁:前后端衔接实践与接口文档规范详解
  • 基于 Vue+SQLite3开发吉他谱推荐网站
  • Skynet火焰图swt搭建