C++ Algorithm 常用算法
C++ <algorithm>
头文件是标准库中提供的一系列算法,用于操作范围(range)内的元素。这些算法可以用于数组、容器如vector和list,以及其他满足相应迭代器要求的数据结构。以下是一些常用的C++ <algorithm>
中的算法及其使用示例。
1. std::sort
:排序
对给定范围内的元素进行排序。默认情况下,按照升序排列,但也可以指定自定义比较函数。
#include <algorithm>
#include <vector>
#include <iostream>int main() {std::vector<int> v = {5, 3, 1, 4, 2};std::sort(v.begin(), v.end());for (int i : v) std::cout << i << ' '; // 输出:1 2 3 4 5return 0;
}
2. std::count_if
:计数满足条件的元素
计算范围内满足特定条件的元素数量。
#include <algorithm>
#include <vector>
#include <iostream>bool is_even(int n) { return n % 2 == 0; }int main() {std::vector<int> v = {1, 2, 3, 4, 5, 6};int count = std::count_if(v.begin(), v.end(), is_even);std::cout << "Even numbers: " << count << std::endl; // 输出:Even numbers: 3return 0;
}
3. std::find_if
:查找第一个满足条件的元素
返回指向范围内第一个满足特定条件的元素的迭代器。
#include <algorithm>
#include <vector>
#include <iostream>bool is_target(int n) { return n == 42; }int main() {std::vector<int> v = {10, 20, 30, 42, 50};auto it = std::find_if(v.begin(), v.end(), is_target);if (it != v.end()) std::cout << "Found: " << *it << std::endl; // 输出:Found: 42else std::cout << "Not found" << std::endl;return 0;
}
4. std::transform
:转换范围
对范围内的每个元素应用一个函数,并将结果存储在另一个容器或序列中。
#include <algorithm>
#include <vector>
#include <iostream>int square(int n) { return n * n; }int main() {std::vector<int> v1 = {1, 2, 3, 4, 5};std::vector<int> v2(v1.size());std::transform(v1.begin(), v1.end(), v2.begin(), square);for (int i : v2) std::cout << i << ' '; // 输出:1 4 9 16 25return 0;
}
5. std::accumulate
:累积值
对范围内的元素执行累积操作,如求和、求乘积等。
#include <algorithm>
#include <vector>
#include <iostream>
#include <numeric>int main() {std::vector<int> v = {1, 2, 3, 4, 5};int sum = std::accumulate(v.begin(), v.end(), 0);std::cout << "Sum: " << sum << std::endl; // 输出:Sum: 15return 0;
}
6. std::remove_if
:移除满足条件的元素
将不满足特定条件的元素移动到范围的前端,并返回新的逻辑结束位置的迭代器。实际删除操作需配合容器的erase方法。
#include <algorithm>
#include <vector>
#include <iostream>bool is_odd(int n) { return n % 2 != 0; }int main() {std::vector<int> v = {1, 2, 3, 4, 5, 6};auto new_end = std::remove_if(v.begin(), v.end(), is_odd);v.erase(new_end, v.end()); // 实际删除操作for (int i : v) std::cout << i << ' '; // 输出:2 4 6return 0;
}
相关文章:
C++ Algorithm 常用算法
C <algorithm> 头文件是标准库中提供的一系列算法,用于操作范围(range)内的元素。这些算法可以用于数组、容器如vector和list,以及其他满足相应迭代器要求的数据结构。以下是一些常用的C <algorithm> 中的算法及其使用…...
线程安全--深入探究线程等待机制和死锁问题
꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转…...
量子计算获重大突破!微软和Quantinuum将量子计算错误率降低800倍,网友:AI算力的希望
量子计算迎来新突破。 近日,微软和量子计算公司Quantinuum宣布:发现了一种新的量子计算系统,可以将传统量子计算的错误率下降800倍,这让高性能量子计算机走进现实更近了一步。 自生成式AI爆发以来,算力是AI发展面临的…...
WordPress 6.5 “里贾纳”已经发布
WordPress 6.5 “里贾纳”已经发布,其灵感来自著名爵士小提琴家Regina Carter的多才多艺。雷吉娜是一位屡获殊荣的艺术家和著名的爵士乐教育家,以超越流派而闻名,她在古典音乐方面的技术基础和对爵士乐的深刻理解为她赢得了大胆超越小提琴所能…...
甲方安全建设之日志采集实操干货
前言 没有永远的安全,如何在被攻击的情况下,快速响应和快速溯源分析攻击动作是个重要的话题。想要分析攻击者做了什么、怎么攻击进来的、还攻击了谁,那么日志是必不可少的一项,因此我们需要尽可能采集多的日志来进行分析攻击者的…...
dm8 开启归档模式
dm8 开启归档模式 1 命令行 [dmdbatest1 dm8]$ disql sysdba/Dameng123localhost:5237服务器[localhost:5237]:处于普通打开状态 登录使用时间 : 3.198(ms) disql V8 SQL> select name,status$,arch_mode from v$database;行号 NAME STATUS$ ARCH_MODE ----------…...
“AI复活”背后的数字永生:被期待成为下一个电商,培育市场认知和用户心智还需时间
“AI复活”背后的数字永生:被期待成为下一个电商,培育市场认知和用户心智还需时间© 由 九派新闻 提供 数字永生,还是电子宠物?过去一个月,因包小柏用AI技术让爱女在数字世界“复活”一事,《流浪地球2…...
基于单片机钢琴电子节拍器系统设计
**单片机设计介绍,基于单片机钢琴电子节拍器系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机钢琴电子节拍器系统设计是一个综合性的项目,它结合了单片机编程、音频处理、用户界面设计等多个领域的…...
我的创作纪念日(year Ⅱ)
大家好,我是Kamen Black 君,今天我与大家简单分享一下我两年来在CSDN的创作历程。 print("祝大家每天快乐,love and peace!") 机缘 当初写博客是为了记录一些自己大学中做比赛的心得,没想到自己能走到这一步…...
应急响应实战笔记05Linux实战篇(1)
第1篇:SSH暴力破解 0x00 前言 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。SSH口令长度太短或者复杂度不够,如仅包含数字&#x…...
重装系统之后,电脑连网卡都没反应怎么办?
前言 有些电脑比较奇葩,安装完成之后会出现网卡连驱动都没有,这时候要安装电脑驱动可是真的烦躁。怎么下手呢? 如果确定电脑的网卡型号还好,直接找个电脑下载个对应的网卡驱动,用U盘复制过去就能安装。 但如果不知道…...
【三十五】【算法分析与设计】综合练习(2),22。 括号生成,77。 组合,494。 目标和,模拟树递归,临时变量自动维护树定义,递归回溯,非树结构模拟树
22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:["((())࿰…...
QT智能指针
一.概述 Qt智能指针是一种能够在不需要手动管理内存的情况下,自动释放资源的指针。它们是C11的std::shared_ptr的一种扩展,可以用于管理Qt对象,尤其是那些不是QObject的对象。 使用智能指针可以避免内存泄露和悬垂指针等问题,同时…...
C++笔记之pkg-config详解,以及g++、gcc编译时使用pkg-config
C++笔记之pkg-config详解,以及g++、gcc编译时使用pkg-config —— 2024-04-05 code review 文章目录 C++笔记之pkg-config详解,以及g++、gcc编译时使用pkg-config1.pkg-config详解`pkg-config` 的基本用法在 `g++`/`gcc` 编译时使用 `pkg-config`注意事项2.示例C++,普通编译…...
[Apple Vision Pro]开源项目 Beautiful Things App Template
1. 技术框架概述: - Beautiful Things App Template是一个为visionOS设计的免费开源软件(FOSS),用于展示3D模型画廊。 2. 定位: - 该模板作为Beautiful Things网站的延伸,旨在为Apple Vision Pro用户…...
Qt Remote Objects (QtRO) 笔记
简介 Qt Remote Objects (QtRO) 是 Qt 的一个进程间通信模块。 术语 Source 是指提供服务或提供功能供其他程序使用的对象,是 RPC 中的被调用端。 Replica 是指 Source 对象的代理对象,用于 RPC 中的调用端,对 Replica 的调用请求将被转发…...
Unity类银河恶魔城学习记录12-6.5 p128.5 Create item by Craft源代码
此章节在原视频缺失,此过程为根据源代码推断而来,并非原视频步骤 Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩…...
UE4_如果快速做出毛玻璃效果_假景深
UE4_如果快速做出毛玻璃效果_假景深 2022-08-20 15:02 一个SpiralBlur-SceneTexture材质节点完成效果,启用半透明材质通过修改BlurAmount数值大小调整效果spiralBlur-SceneTexture custom节点,HLSL语言float3 CurColor 0;float2 BaseUV MaterialFloa…...
c# wpf LiveCharts 绑定 简单试验
1.概要 c# wpf LiveCharts 绑定 简单试验 2.代码 <Window x:Class"WpfApp3.Window2"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schem…...
【Kafka】Kafka安装、配置、使用
【Kafka】安装Kafka 1. 安装Kafka2. Kafka使用2.0 集群分发脚本xsync(重要)2.0.1 scp命令2.0.2 rsync远程同步工具2.0.3 写一个集群分发脚本xsync (Shell 脚本) 2.1 Zookeeper安装2.2 对Kafka进行分发2.2.1 执行同步脚本2.2.2 三台云主机配置Kafka环境变量 1. 安装Kafka Kafka…...
2024HW-->Wireshark攻击流量分析
在HW中,最离不开的,肯定是看监控了,那么就要去了解一些wireshark的基础用法以及攻击的流量!!!! 1.Wireshark的基本用法 比如人家面试官给你一段流量包,你要会用 1.分组详情 对于我…...
Lafida多目数据集实测
Lafida 数据集 paper:J. Imaging | Free Full-Text | LaFiDa—A Laserscanner Multi-Fisheye Camera Dataset 官网数据:https://www.ipf.kit.edu/english/projekt_cv_szenen.php 官网:KIT-IPF-Software and Datasets - LaFiDa 标定数据下载&…...
excel wps中编码格式转换
EXCEL报表:另存为CSV格式,转换成UTF-8编码 - 简书 (jianshu.com) 经验证管用...
【游戏分析】非游戏领空追字符串来源
通过NPC名称找NPC数组 扫描 NPC名字 ASIC型 发现全部都有后缀 那么采用 字节集的方式去扫描 也是扫不到 说明:不是ASIC型字符串 扫描 NPC名字 Unicode型 没有结果 那么转换成字节集去扫描 终于发现结果了 把结果挨个修改字符串 发现 其中两个是可以用的 22和23 …...
golang 数组和切片
区别 1.数组长度固定,切片长度可变 2.数组是深拷贝,切片是浅拷贝,切片是引用类型 扩容规则 不同版本不一样 https://www.jb51.net/article/280481.htm#_lab2_2_1 go1.18 1.如果期望容量大于当前容量的两倍就会使用期望容量; 2.如…...
物联网实战--入门篇之(九)安卓QT--开发框架
目录 一、QT简介 二、开发环境 三、编码风格 四、设计框架 五、总结 一、QT简介 QT是一款以C为基础的开发工具,已经包含了很多常用的库,除了基本的GUI以外,还有网络、数据库、多媒体、进程通信、串口、蓝牙等常用库,开发起来…...
【leetcode面试经典150题】16.接雨水(C++)
【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...
互联网面经
腾讯视频 代码:反转链表,单例模式 RAII,哪里用到 Web服务器怎样处理请求 get\post流程 项目使用的还是http1.0吗;http2.0:二进制、首部压缩、主动推送;Https Epoll/select/poll ET/LT 进程地址空间。3…...
xss介绍及作用
XSS(Cross-Site Scripting)是一种常见的网络安全漏洞,它允许攻击者向网站注入恶意的客户端脚本代码,从而在用户的浏览器中执行这些代码。 XSS攻击的原理是攻击者将恶意脚本插入到网页中的用户输入数据中,当其他用户访…...
PostgreSQL入门到实战-第二弹
PostgreSQL入门到实战 PostgreSQL安装之Windows官网地址PostgreSQL概述Windows上安装PostgreSQL更新计划 PostgreSQL安装之Windows 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreSQL概…...
旅游网站的系统建设的意义/广州最新疫情情况
2019独角兽企业重金招聘Python工程师标准>>> 在原有 SSH 老项目中接入 JFinal 简单到不可思议,大致方法如下: 1:在现有 SSH 老项目的 web.xml 中添加 JFinalFilter,就跟一个全项目项目的方式完全一样 这里只需要注意一…...
wordpress食谱/seo网络排名优化
概述 SeekBar,拖动条。主要的要点是自定义的样式,拖动条的值,拖动条值改变的监听器等等。 SeekBar的重要的属性 style"android:style/Widget.SeekBar" 指定样式 android:max"200" 最大值为200,默认是100 andr…...
wordpress rt19/百度有哪些app产品
【IT168 技术文章】线程化和同步是 Java 编程语言的核心特性,Java 语言规范(JLS)中对二者作出了描述。RTSJ 用多种方式扩展了 JLS 的核心功能。例如,RTSJ 引入了一些新的实时(RT)线程类型,它们必须遵守比普通 Java 线程更加严格的调度策略。另…...
上海个人网站建/人力资源培训机构
没考虑跳到下一个平台,但是会摔死情况,第二次编写时自然地发现了 如果Jimmy恰好落在某个平台的边缘,被视为落在平台上。所以坐标判断有没有落在平台上要加等号 对于情况2,可能有多个平台有端点重合,此时可以跳多个平…...
一级a做爰片 A视频网站/互联网营销顾问是做什么的
对于专科生来说,选择一个好的专业,关乎以后自己能否找到一个好的工作,下面小编为大家提供大专都有哪些专业,仅供大家参考。大专有什么专业大专的具备的专业和本科的专业没有太大的区别,一般本科具备的专业,…...
邯郸网站设计公司/谷歌浏览器 安卓下载2023版
设置USB数据监听在Kali Linux中,USB也是作为一个通信端口进行存在。常见的鼠标、键盘、U盘都是通过USB接口传输数据。所以,对于USB接口也可以实施监听,类似网络接口一样。在进行USB数据监听的时候,首先需要加载usbmon模块…...