STL——常用算法

#include<algorithm>

遍历算法

for_each

for_each(iterator beg,iterator end,_func); //func为函数对象或者函数

transform

搬运容器到另一个容器中

transform(iterator beg1, iterator end1, iterator beg2, _func);

例如: transform(v.begin(), v.end(), vTarget.begin(), TransForm());

查找算法

find

find(iterator beg,iterator end,value);

//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器

find_if

按条件查找元素

find_if(iterator beg, iterator end, _Pred);

//_Pred 为函数或者谓词

//返回指定迭代器位置

adjacent_find

查找相邻重复元素

adjacent_find(iterator beg,iterator end);

//查找相邻重复元素,返回相邻元素的第一个位置的迭代器 —— beg开始迭代器,end结束迭代器

binary_search

查找指定元素是否存在,内部使用二分查找,必须针对有序序列,若是自定义类型,需要在类里面重载<或者是定义比较函数

count

统计元素个数,按值统计

count(iterator beg,iterator end,value);

count_if

按条件统计元素个数

count_if(iterator beg, iterator end, _Pred);

//_Pred谓词

排序算法

sort

sort(iterator beg,iterator end,_Pred); //谓词

random_shuffle

洗牌,随机调整次序

random_shuffle(iterator beg,iterator end);

记得调用随机数种子,如果要重复使用的话

srand((unsigned int)time(NULL));

merge

两个容器元素合并,并存储到另一个容器中

merge(iterator beg1,iteratore end1,iterator beg2,iterator end2,iterator dest);

//将容器1和容器2存储到目标容器中

//merge合并两个容器必须是有序的序列

reverse

对容器内元素进行反转

reverse(iterator beg, iterator end);

常见拷贝和替换算法

copy

copy(iterator beg,iterator end,iterator dest);

//注意,copy不会负责处理动态分配内存的分配和释放,即浅拷贝

//同时目标容器得提前开辟空间

replace

将区间内的旧元素替换为新元素

replace(iterator beg,iterator end,oldvalue,newvalue);

//把区间内旧元素替换为新元素

replace_if

将区间内满足条件的元素替换为指定元素

replace_if(iterator beg,iterator end,_pred,newvalue); //_pred谓词

swap

互换两个容器的元素,需要是同种类型的容器。

swap(container c1, container c2);

算数生成算法

包含的头文件为 #include<numeric>

accumulate

计算区间内容器元素累计总和

accumulate(iterator beg,iterator end,value);

//beg开始迭代器,end结束迭代器,value起始值

例如:int total = accumulate(v.begin(), v.end(), 0);

fill

向容器中填充指定元素

fill(iterator beg,iterator end,value); //value为填充的值

常用集合算法

set_intersection

求两个容器的交集——必须是有序序列

set_intersection(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);

dest为目标容器开始迭代器

目标容器开辟空间需从两个容器中取小值

set_union

求两个容器的并集——必须是有序序列

set_union(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);

dest为目标容器开始迭代器

目标容器开辟空间需要为两个容器相加

set_difference

求两个集合的差集

set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);

两个集合必须是有序序列

有返回值,为差集中最后一个元素的位置。,方便锁定到有效部分

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

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

相关文章

Node.js的优缺点

Node.js 作为一个流行的服务器端 JavaScript 运行环境&#xff0c;具有其独特的优点和缺点。以下是 Node.js 的一些主要优缺点&#xff1a; 优点&#xff1a; 单线程异步非阻塞 I/O&#xff1a; Node.js 使用单线程事件循环来处理请求&#xff0c;避免了多线程编程中的线程同…

[嵌入式系统-73]:RT-Thread-快速上手:如何选择RT Thread的版本?

目录 如何选择合适的 RT-Thread 版本进行开发&#xff1f; RT-Thread 分支与版本介绍 如何选择 发布版本&#xff08;GitHub releases&#xff09; 开发分支&#xff08;GitHub master 主分支&#xff09; 长期支持分支&#xff08;GitHub lts-v3.1.x 分支&#xff09; …

用Github+HUGO搭建博客的经验教训

1. 创建两个Github仓库 一个是博客源仓库&#xff08;private&#xff09;&#xff0c;用于储存所有博客源文件&#xff08;Markdown文件和图片文件等&#xff09;。 另一个是GitHub Pages仓库&#xff08;public&#xff09;&#xff0c;用于储存由 Hugo 从Markdown 文件生成的…

React中间件的概念以及常用的实现

在 React 中&#xff0c;中间件&#xff08;Middleware&#xff09;是一种在组件之间进行处理的机制&#xff0c;它允许你在组件渲染过程中注入一些逻辑、功能或者处理过程。中间件通常被用于在组件渲染前后执行一些操作&#xff0c;比如日志记录、权限验证、状态管理等。常用的…

10.轮转数组

文章目录 题目简介题目解答解法一&#xff1a;使用额外的数组代码&#xff1a;复杂度分析&#xff1a; 解法二&#xff1a;数组反转代码&#xff1a;复杂度分析&#xff1a; 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来的是 轮转数组 相关的讲解&#xff01;&#…

STM32:EXTI—外部中断的初始化

文章目录 1、中断1.2 中断系统1.3 中断执行流程 2、STM32中断2.2EXTI&#xff08;外部中断&#xff09;2.3 EXTI 的基本结构2.4 AFIO复用IO口 3、NVIC基本结构3.2 NVIC优先级分组 4、配置EXTI4.2 AFIO 库函数4.3 EXTI 库函数4.4 NVIC 库函数4.5 配置EXTI的步骤4.6 初始化EXTI 1…

Python运维之协程

目录 一、定义协程 二、并发 三、异步请求 协程是一种轻量级的线程&#xff0c;它通过保存和恢复寄存器上下文和栈来实现调度切换&#xff0c;从而保留函数执行的状态。 这种机制使得协程在处理I/O密集型任务时效率较高&#xff0c;因为它们可以在I/O操作期间让出CPU&#…

git push报错git@github.com: Permission denied (publickey).

gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.已经使用git config设置邮箱和密码&#xff0c;可以说使用git config --list查看&#xff0c;…

QT——tableWidget-跳变之舞V1.0-记录学习【1】

QT——tableWidget-跳变之舞V1.0-记录学习【1】 文章目录 QT——tableWidget-跳变之舞V1.0-记录学习【1】前言一、利用QT创建项目文件1.1 完整项目文件如下图所示:1.2 演示&#xff1a; 二、声明文件&#xff1a;2.1 主界面声明文件:mainwindow.h&#xff1b;2.2 控制窗口声明文…

科技查新中医学科研项目查新点如何确立与提炼?案例讲解

一、前言 医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c;通过在一定范围内进行该课题的相关文献检索 ( 可以根据项目委托人的具体要求&#xff0c;进行国内检索或者进行国外检索 ) &#x…

python 抓取文档后如何存档的问题

在Python中抓取文档(如网页内容、文本文件等)并将其存档,通常涉及以下几个步骤: 1. 发送请求获取数据 首先,你需要使用如requests库来发送HTTP请求,获取网页内容。如果是要抓取本地文件,则可以直接使用文件读取操作。 import requestsurl = http://example.com/some-…

区块链(打新)如何被割韭菜

看上去&#xff0c;像我只要去每个都买一遍新发行的代币&#xff0c;一定可以成功的 但是好像没有想象中这么简单&#xff0c;因为这些山寨币&#xff0c;庄家可以自己控盘的&#xff0c;看上去好像有跌宕起伏的买卖&#xff0c;但是一单掀桌子&#xff0c;庄家他自己都不玩了…

Python之数据分析基础

导言&#xff1a; “21世纪的竞争是数据的竞争&#xff0c;谁掌握数据&#xff0c;谁就掌握未来”。如何将大量看似杂乱无章的数据进行聚合&#xff0c;并发现潜在的规律也变得越来越重要。本文将先说明数据分析的步骤&#xff0c;再通过python完成实例数据的处理、分析最终展…

TDM(BPM)-MIMO-FMCW雷达MATLAB仿真

本文通过对车载毫米波雷达信号流程和链路的仿真&#xff0c;建立基本的算法框架&#xff0c;可用于算法性能的验证。并提供基础MATLAB仿真代码&#xff0c;作为分享和参考。 一、信号的产生 车载毫米波雷达广泛使用线性调频连续波雷达&#xff0c;也即发射信号频率随时间线性变…

日本OTC机械手维修需要注意哪些问题呢?

随着工业4.0时代的到来&#xff0c;机器人在制造业中的应用越来越广泛。OTC&#xff08;Over The Counter&#xff09;机器人作为工业机器人的一种&#xff0c;以其高效、精准、稳定的特点受到众多企业的青睐。然而&#xff0c;在实际使用过程中&#xff0c;可能会出现一些OTC机…

pnpm包管理工具的理解

相对于npm优势 速度快节省磁盘空间&#xff0c;如&#xff1a; 当使用 npm 时&#xff0c;如果你有 100 个项目&#xff0c;并且所有项目都有一个相同的依赖包&#xff0c;那么&#xff0c; 你在硬盘上就需要保存 100 份该相同依赖包的副本。然而&#xff0c;如果是使用 pnpm…

如何在路由器上做端口映射

假设现在外网有一台ADSL直接拨号上网的电脑&#xff0c;所获得的是公网IP。然后它想访问局域网内的电脑上面的网站&#xff0c;那么就需要在路由器上做端口映射。在路由器上做端口映射的具体规则是&#xff1a;将所有发向自己端口的数据&#xff0c;都转发到内网的计算机。 访…

微信小程序-禁止页面下拉回弹

微信小程序-禁止页面下拉回弹,主要是pages.json中的这3个配置: "enablePullDownRefresh": false, 这个配置项用于控制页面是否支持下拉刷新。当设置为false时&#xff0c;用户无法通过下拉页面来触发刷新操作。 "disableScroll": true, 这个配置项用于控…

github删除自己的仓库

测试Github的时候新建了很多仓库&#xff0c;但是后来想删除&#xff0c;找了半天居然没有找到按钮。 我就推测这个删除的功能肯定藏起来了&#xff0c;后来度娘了一下&#xff0c;发现果然在一个比较隐蔽的位置&#xff0c;不知道以后这个功能会不会改到一个比较明显的位置吧…

git命令详解+使用样例

1、删除远程分支 假设您要删除名为 remote_branch 的远程分支&#xff0c;可以按照以下步骤操作&#xff1a; git push origin --delete remote_branch这将会删除名为 remote_branch 的远程分支。请确保在执行此命令之前&#xff0c;remote_branch远程分支不在需要&#xff0…