STL : 单向链表 Forward_list 与 双向链表 List

news2024/11/14 13:51:19

目录

Forward_list

Member functions

List

Elements access

Modifiers

Operations

Observes


Forward_list

  • #include    using namespace std;

  • 单链表:数据的存储位置是分散的、随机的,整个链表的数据的线性关系通过指针来维持;

  • 擅长在序列的任何位置进行元素的插入或删除操作,访问元素效率低;

  • 只能从前向后遍历,只提供前向迭代器;

  • 存储相同个数的同类型元素,耗用的内存空间更少,空间利用率高。

Member functions

NameRoelNotice
cbefore_begin和 before_begin 功能相同,在原有基础上增加了 const 属性before_begin( ) : 返回前向迭代器,指向第一个元素之前的位置
cbegin和 begin 功能相同,在原有基础上增加了 const 属性begin( ) : 返回前向迭代器,指向第一个元素的位置
cend和 end 功能相同,在原有基础上增加了 const 属性end( ) : 返回前向迭代器,指向最后一个元素之后的位置
assign用新元素替换容器中的原有内容
emplace_front在容器头部生成一个元素,和 push_front 相同,效率更高push_front( ) : 容器头部插入一个元素
emplace_after和 insert_after 功能相同,但效率更高insert_after( ) : 指定位置之后插入一个新元素,并返回一个指向新元素的迭代器
erase_after删除容器中某个指定位置或区域内的所有元素
remove_if删除容器中满足条件的元素remove(val) : 删除容器中所有等于 val 的元素
merge合并两个事先已排好序的容器,且合并之后的容器依然是有序的
advance容器前向单步移动除了使用 ++ 运算符,还可以advance(it, 2);

List

  • #include; using namespace std;

  • 双向链表 :元素存储在连续的列表容器中,封装:链表;

  • 动态存储分配,由一系列结点(数据域、指针域)构成;

  • 支持对任意位置的插入、删除;

  • 支持 ++ / -- 双向访问,不支持 += / -= 随机访问;

  • 按顺序访问,遍历速度没有数组快,占用空间比数组大;

  • 内存空间是不连续的,通过指针来访问访问数据,

  • List 接口函数介绍。

Elements access

NameRoleNotice
front返回第一个元素的引用
back返回最后一个元素的引用

Modifiers

NameRoleNotice
assign赋值,替换旧元素为列表容器添加新元素assign(beg, end)
assign(n, elem)
emplace_front c11列表开头插入新元素,容器大小增加 1(就地构造)
push_front列表开头插入新元素,容器大小增加 1
pop_front列表开头删除元素,容器大小减少 1
emplace_back c11列表末尾插入新元素,容器大小增加 1(就地构造)
push_back列表末尾插入新元素,容器大小增加 1
pop_back列表末尾删除元素,容器大小减少 1
emplace c11指定位置插入新元素来扩展列表,返回一个指向新插入元素的随机访问迭代器
insert指定位置插入一个或多个元素insert(pos,beg,end)
erase指定位置删除一个元素,返回指向下一参数的随机访问迭代器rease(beg, end)
erase(pos)
swap与另一相同类型的列表交换列表的内容
resize重新设置列表大小(尺寸更大则补充,int 默认 0)resize(num, elem)
clear删除列表所有元素,使其大小为 0

Operations

NameRoleNotice
splice部分或全部删除源列表的内容,并插入到目的 list
remove从列表中删除与作为函数参数给出的值相对应的所有值remove(elem)
remove_if从列表中删除与谓词或条件相对应的所有值
unique从列表中删除所有连续出现的重复元素
merge以递增的顺序合并两个已排序的列表。compare : 比较器,实现内部比较合并列表。merge(list,  compare)
sort按递增顺序排列给定列表的元素(仅在列表中移动)
reverse反转列表中元素的顺序

Observes

NameRoleNotice
get_allocator返回与列表关联的分配器函数不抛出异常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode 训练营 3,5】无重复字符的最长子串+最长回文子串

💌 博客内容:LeetCode 训练营 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这…

架构重构的技巧

1 代码重构 定义 对软件代码做任何改动以增加可读性或者简化结构而不影响输出结果。 目的 增加可读性、增加可维护性、可扩展性 3 关键点 不影响输出不修正错误不增加新的功能性 代码重构时,发现有个功能实现逻辑不合理,可直接修改吗?…

网络安全-JDBC反序列化漏洞与RCE

目录环境Black Hat Europe 2019漏洞原理攻击手法mysql-connector-java的分析Mysql协议抓包分析Mysql服务器docker启动抓包&&分析Fake Mysql Server搭建Java反序列化工具ysoserial使用fnmsd师傅的MySQL_Fake_Server使用Y4tacker师傅的脚本JDBC代码项目架构代码复现参考环…

Python爬虫之读取数据库中的数据

之前几篇我们一直在研究如何从网站上快速、方便的获取数据,并将获取到的数据存储在数据库中。但是将数据存储在数据中并不是我们的目的,获取和存储数据的目的是为了更好的利用这些数据,利用这些数据的前提首先需要从数据库按一定的格式来读取…

LeetCode——二叉树的非递归遍历

144. 二叉树的前序遍历 给你二叉树的根节点root,返回它节点值的前序遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root [] 输出:[] 示例 3: 输入&#xff1…

[ 应急响应基础篇 ] 使用 Autoruns 启动项分析工具分析启动项(附Autoruns安装教程)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

Spring详解简介

1、Spring的简介 Spring的英文翻译为春天,可以说是给Java程序员带来了春天,因为它极大的简化了开发。我得出一个公式:Spring 春天 Java程序员的春天 简化开发。最后的简化开发正是Spring框架带来的最大好处。 Spring是一个开放源代码的设计…

SpringSecurity之两个重要接口

前言 前面讲解了关于SpringSecurity的基本原理,其中介绍了过滤器链以及过滤器加载的过程。我们在前面入门案例中的用户名和密码是系统自动生成的,在真实应用环境中,是需要查询数据库获取用户名密码是否匹配的,那么如何实现呢&…

贯穿设计模式第二话--开闭职责原则

🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…

串口数据处理

1.在串口接收中断中接收到的数据写入环形缓冲区;唤醒解析线程(发出任务通知)或释放信号量。 2.开一个解析线程: void AT_Parser() {while(1){1.等待任务通知;读环形缓冲区(将数据存起来); 2.常…

FE_CSS 页面布局之浮动

网页布局的本质——用 CSS 来摆放盒子。 把盒子摆放到相应位置。CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序): 普通流(标准流)浮动定位 1 标准流(普通流/文档流) 所谓的标准流: 就是标签按照规定…

LAMP架构与网站搭建实例

一.LAMP概述 1、LAMP的概念 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境 LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、…

53 openEuler搭建PostgreSQL数据库服务器-管理数据库

文章目录53 openEuler搭建PostgreSQL数据库服务器-管理数据库53.1 创建数据库创建数据库示例53.2 选择数据库选择数据库示例53.3 查看数据库查看数据库示例53.4 删除数据库删除数据库示例53.5 备份数据库备份数据库示例53.6 恢复数据库恢复数据库示例53 openEuler搭建PostgreSQ…

第十四届蓝桥杯省赛c/c++大学B组题解

第十四届蓝桥杯省赛c/c大学B组题解 个人答案,有错漏感谢指正哈 试题 A: 日期统计 本题总分:5 分 【问题描述】   小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示&#xff…

Linux应用编程(文件属性与目录)

本章将会讨论如下主题内容。 ⚫ Linux 系统的文件类型; ⚫ stat 系统调用; ⚫ 文件各种属性介绍:文件属主、访问权限、时间戳; ⚫ 符号链接与硬链接; ⚫ 目录; ⚫ 删除文件与文件重命名。 一、Linux 系统中…

python编写一计票程序,键盘输入候选人姓名(输入“#”结束),使用字典存储并统计出候选人得票数。python实现分段函数。

一、编程题目 编程题目1&#xff1a;python编写一计票程序&#xff0c;键盘输入候选人姓名(输入“#”结束)&#xff0c;使用字典存储并统计出候选人得票数。 编程题目2&#xff1a;python实现以下分段函数&#xff1a; y 2x^34x^23 -10<x<0 y x14 0<x<6 y 6x…

001+limou+git安装与入门

1、git安装以及下载检查&#xff08;windows环境&#xff0c;macOS可能比较麻烦&#xff09; &#xff08;1&#xff09;下载git git官网下载&#xff0c; Git - Downloading Package (git-scm.com) &#xff08;2&#xff09;检查下载 以下命令可以检查git是否下载成功 $…

JAVA入坑之类和对象

目录 一、类 1.1面向对象(OOP)与面向过程 1.2面向对象的三个特性 1.3类的语法格式 1.3.1类的分类 1.3.2类修饰符 1.4变量 1.4.1变量格式 1.4.2成员变量 1.4.3区分实例变量和类变量 1.4.4局部变量 1.4.5区分成员变量和局部变量 1.5final关键字 1.5.1常量 1.6方法 …

基于Java+SSM+jsp的二手车交易网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例&#xff08;300套&#xff09; 目录 一、效果演示 二、…

博客首页效果

学习来自风宇blog的博客首页效果 全部用的基本上都是原生的html&#xff0c;css&#xff0c;js特别是flex布局的使用&#xff0c;主轴方向可以是横轴&#xff0c;也可以是纵轴&#xff0c;弹性项还可可以使用百分比sticky粘性布局&#xff0c;作为侧边栏&#xff0c;它不会超出…