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

算法常用库函数——C++篇

前言

本文主要记录、整理、回顾在算法考试中常用的一些库函数,技巧等,不断更新中~

list 常用方法

在一般c++编程中,对于数组这样的数据结构,一般都使用vector居多,貌似list用的很少。但实际list也十分强大,是STL 中的双向链表容器,特别是适用于一些频繁插入的一些操作。
使用案例:leetcode 56.合并区间

1. 初始化和构造

  • list<int> lst; 默认构造函数,创建一个空链表。

  • list<int> lst(n, value); 使用给定值 value 初始化链表,链表包含 n 个元素。

  • list<int> lst(first, last); 通过两个迭代器区间 [first, last) 初始化链表。

  • list<int> lst(lst2); 使用另一个 list 拷贝构造一个新的链表。

2. 基本操作

  • lst.size(); 返回链表中元素的个数。

  • lst.empty(); 检查链表是否为空,如果为空返回 true,否则返回 false

  • lst.clear(); 清空链表,删除所有元素。

  • lst.front(); 返回链表的第一个元素。

  • lst.back(); 返回链表的最后一个元素。

3. 元素访问与修改

  • lst.push_front(value); 在链表的前面插入元素 value

  • lst.push_back(value); 在链表的末尾插入元素 value

  • lst.pop_front(); 删除链表的第一个元素。

  • lst.pop_back(); 删除链表的最后一个元素。

  • lst.insert(it, value); 在迭代器 it 所指向位置之前插入元素 value

  • lst.erase(it); 删除迭代器 it 所指向的元素。

  • lst.erase(first, last); 删除从 firstlast 范围的元素。

4. 查找与修改

  • lst.find(value); 查找链表中第一次出现的元素 value,返回指向该元素的迭代器,如果没有找到返回 lst.end()

  • lst.remove(value); 删除链表中所有值为 value 的元素。

  • lst.remove_if(pred); 删除满足谓词 pred 的所有元素。

  • lst.reverse(); 反转链表中的元素顺序。

  • lst.sort(); 对链表中的元素进行排序。

  • lst.unique(); 删除链表中相邻的重复元素。

5. 拼接与操作

  • lst.splice(it, lst2);lst2 中的所有元素插入到 lst 中,插入位置在迭代器 it 指向的位置之前。lst2 会变为空。

  • lst.splice(it, lst2, it2);lst2it2 指向的元素插入到 lst 中,插入位置是迭代器 it 指向的位置之前。

  • lst.splice(it, lst2, first, last);lst2 中的从 firstlast 范围的元素插入到 lst 中,插入位置是迭代器 it 指向的位置之前。

6. 迭代器操作

  • lst.begin(); 返回指向链表第一个元素的迭代器。

  • lst.end(); 返回指向链表末尾(一个越界位置)的迭代器。

  • lst.rbegin(); 返回指向链表最后一个元素的反向迭代器。

  • lst.rend(); 返回指向链表头部之前的一个反向迭代器。

  • advance(it, n); 让迭代器 it 向前移动 n 步。

  • it = lst.insert(it, value); 在迭代器 it 指向的位置插入元素 value,返回插入元素的新位置。

7. 其他辅助方法

  • lst.resize(n); 调整链表的大小,如果 n 小于当前大小,链表会被截断;如果大于当前大小,会插入默认值。

  • lst.resize(n, value); 调整链表的大小,并使用 value 填充新增的元素。

持续补充更新中~

相关文章:

算法常用库函数——C++篇

前言 本文主要记录、整理、回顾在算法考试中常用的一些库函数&#xff0c;技巧等&#xff0c;不断更新中~ list 常用方法 在一般c编程中&#xff0c;对于数组这样的数据结构&#xff0c;一般都使用vector居多&#xff0c;貌似list用的很少。但实际list也十分强大&#xff0c…...

怎么把多个PDF合并到一起-免费实用PDF编辑处理工具分享

>>更多PDF文件处理应用技巧请前往 96缔盟PDF处理器 主页 查阅&#xff01; 序言 我之前的文章也有介绍过如何使用96缔盟PDF处理器对PDF文件合并或者批量合并的介绍&#xff0c;但是当时是使用DMPDFUtilTool1.0版本进行的&#xff0c;当时的功能尚不完善&#xff0c;还不支…...

RFC协议简要介绍——有关TCP拥塞控制的RFC

1.RFC Request For Comments&#xff08;RFC&#xff09;&#xff0c;是一系列以编号排定的文件。文件收集了有关互联网相关信息&#xff0c;以及UNIX和互联网社区的软件文件。RFC文件是由Internet Society&#xff08;ISOC&#xff09;赞助发行。基本的互联网通信协议都有在R…...

Speckly:基于Speckle文档的RAG智能问答机器人

前言 Speckly 是一个基于 检索增强生成 (RAG) 技术的智能问答机器人&#xff0c;它能像一位经验丰富的工程师&#xff0c;理解你的问题&#xff0c;并从 Speckle 文档中精准地找到答案。更厉害的是&#xff0c;它甚至可以帮你生成代码片段&#xff01;&#x1f680; 本文将详…...

香橙派5Plus启动报错bug: spinlock bad magic on cpu#6, systemd-udevd/443

一、问题 如图&#xff1a; 接上调试串口&#xff0c;每次启动都会报错。不过使用过程中没有发现有什么影响。 百度查阅&#xff0c;有一位博主提到&#xff0c;但是没有细说解决方案&#xff1a; spinlock变量没有初始化_spinlock bad magic on-CSDN博客https://blog.csdn.n…...

电子应用设计方案74:智能家庭对讲系统设计

智能家庭对讲系统设计 一、引言 智能家庭对讲系统作为智能家居的重要组成部分&#xff0c;为家庭成员之间以及与访客的沟通提供了便捷、高效的方式。本设计方案旨在打造一个功能强大、稳定可靠、操作简便且具有良好扩展性的智能家庭对讲系统。 二、系统概述 1. 系统目标 - 实…...

node js 过滤空白行

data.trim().split(\n).filter(user > user); 只过滤文件开头和结尾的空白行。 data.split(\n).map(token > token.trim()).filter(token > token); 这种方法不仅移除了文件开头和结尾的空白行&#xff0c;还确保了每一行内部的多余空白也被清理掉。此外&#xff0c;…...

武泳樽携手AI AD Manager荣获红点奖,智能广告管理系统备受瞩目

近日,由著名设计师武泳樽主导设计的AI AD Manager在2024年红点奖评选中荣获大奖,这一殊荣不仅彰显了他在创新设计领域的卓越实力,更巩固了AI AD Manager作为智能广告技术标杆的地位。凭借独特的用户体验设计、尖端的AI驱动功能和出色的技术融合,AI AD Manager在激烈的国际竞争中…...

Express.js 有哪些常用的中间件?

在使用 Express.js 开发应用程序时&#xff0c;中间件&#xff08;Middleware&#xff09;是处理请求和响应的关键组件。它们可以执行各种任务&#xff0c;如解析请求体、添加HTTP头部、记录日志等。以下是一些常用的中间件&#xff1a; body-parser 用于解析传入的请求体。它…...

WordPress File Upload插件 任意文件读取漏洞复现(CVE-2024-9047)(附脚本)

0x01 产品描述: File Upload插件是一款功能强大的WordPress站点文件上传插件,它允许用户在WordPress站点中的文章、页面、侧边栏或表单中轻松上传文件到wp-contents目录中的任何位置。该插件使用最新的HTML5技术,确保在现代浏览器和移动设备上都能流畅运行,同时也兼容旧的浏…...

qt QZipReader详解

1、概述 QZipReader 是 Qt 中用于从 .zip 文件中读取和提取文件内容的类。它提供了便捷的方法来访问压缩包中的文件和目录&#xff0c;并允许你解压缩单个或多个文件。通过 QZipReader&#xff0c;你可以以编程方式读取 .zip 文件中的内容&#xff0c;并提取它们到目标目录中。…...

C# 超高速高性能写日志

原理 使用列队先缓存到内存&#xff0c;独立线程从列队中使用log4net写到磁盘上。 日志写入列队 public void EnqueueMessage(string message, FlashLogLevel level, Exception ex null) {if ((level FlashLogLevel.Debug && _log.IsDebugEnabled)|| (level Flas…...

阿里云人工智能ACA(五)——深度学习基础

一、深度学习概述 1. 深度学习概念 1-1. 深度学习基本概念 深度学习是机器学习的一个分支基于人工神经网络&#xff08;模仿人脑结构&#xff09;通过多层网络自动学习特征能够处理复杂的模式识别问题 1-2. 深度学习的优点与缺点 优点 强大的特征学习能力可以处理复杂问题…...

入职体检尿潜血3+能通过吗,什么原因引起

在许多行业入职体检中&#xff0c;尿液检测是一个重要的组成部分。尿潜血&#xff08;也称为尿中血红蛋白&#xff09;是尿液常规检查中一种常见的指标&#xff0c;其结果可以反映出身体的健康状况。当检测结果为“尿潜血3”时&#xff0c;很多人会感到困惑&#xff0c;尤其是在…...

vue最新源码探索分析

我在github上fork了最新版本vue3.5版本的源码并做了大幅删除&#xff0c;保留最核心的代码&#xff0c;有兴趣的可以看看&#xff0c;欢迎大家提出PR 仓库地址 https://github.com/greatanimalion/core 本项目vue版本3.5.13 为了方便查看与分析&#xff0c;减少心智负担 已…...

Kivy App开发之打包apk

Kivy项目可以为windows,max os,安卓,IOS等平台创建运行python的程序包。本文介绍如何将程序打包成apk并在安卓系统上安卓运行。 打包apk的方法主要有三种 使用Kivy Launcher,添加项目文件夹(必须包含main.py文件和android.txt文件),启动Kivy Launcher后就会运行,要生成a…...

【Java 数据结构】LinkedList 类 和 模拟实现链表

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 什么是 LinkedList &#xff1f; 2 LinkedList 的使用 2.1 LinkedList 的构造 2.2 LinkedList 的常用方法 2.3 LinkedList 的遍历 3. 单链表的模拟实现…...

VS2022 中的 /MT /MTd /MD /MDd 选项

我们有时编译时,需要配置这个 运行库,指定C/C++运行时库的链接方式。 如下图 那么这些选项的含义是什么? /MT:静态链接多线程库 /MT选项代表“Multi-threaded Static”,即多线程静态库。选择此选项时,编译器会从运行时库中选择多线程静态连接库来解释程序中的代码,…...

产品初探Devops!以及AI如何赋能Devops?

DevOps源自Development&#xff08;开发&#xff09;和Operations&#xff08;运维&#xff09;的组合&#xff0c;是一种新的软件工程理念&#xff0c;旨在打破传统软件工程方法中“开发->测试->运维”的割裂模式&#xff0c;强调端到端高效一致的交付流程&#xff0c;实…...

两种不同的LuaBehaviour生命周期绑定

在学习xLua时&#xff0c;发现xLua和LoxodonFramework的LuaBehaviour稍微有些不同&#xff0c;其中一个点是在调用DoString方法时的区别 1. xLua的版本中 直接使用Lua脚本环境进行绑定&#xff0c;这时候的Lua脚本调用生命周期函数是这样的 直接在Lua脚本中写函数就行 2. Lo…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...