【C++编程语言】STL常用算法 算术生成和集合算法

1.算术生成算法概念
算法简介:
- accumlate 计算容器元素累计总和
- fill 向容器中添加元素
注意:算术生成算法属于小型算法 使用时包含头文件为#include<numeric>
2.accumulate
/*函数原型:int accumulate(iterator beg ,iterator end , value);计算容器元素累加总和beg 开始迭代器end 结束迭代器value 起始值
*/
void test01() {
vector<int> v;for (int i = 0; i <= 100; i++) {v.push_back(i);}//参数3 起始累加值int total = accumulate(v.begin(), v.end(), 0);cout<< total <<endl;
}
int main() {test01();system("pause");return 0;
}
3.fill 向容器中填充指定的元素
/*函数原型:fill(iterator beg ,iterator end , value);向容器中填充元素beg 开始迭代器end 结束迭代器value 填充值
*/
void myPrint(int val) {cout<<val<<" ";
}
void test01() {
vector<int> v;v.resize(10);
//重新填充fill(v.begin(), v.end(), 100);for_each(v.begin(), v.end(), myPrint);
}
int main() {test01();system("pause");return 0;
}
4.集合算法概念
算法简介:
- set_intersection 求两个容器的交集
- set_union 求两个容器的并集
- set_difference 求两个容器的差集
5.set_intersection 求两个容器的交集
/*函数原型:iterator set_itersection(iterator beg1 ,iterator end1 , iterator beg2 ,iterator end2 ,iterator dest);求两个集合的交集注意:两个容器的必须是有序序列beg1 容器1开始迭代器end1 容器1结束迭代器beg2 容器2开始迭代器end2 容器2结束迭代器dest 目标容器开始迭代器返回值为:目标容器的最后一个元素的迭代器地址
*/
void myPrint(int val) {cout<<val<<" ";
}
void test01() {
vector<int> v1;vector<int> v2;for (int i = 0; i < 10; i++) {v1.push_back(i);v2.push_back(i + 5);}//目标容器需要提前开辟空间//最特殊情况 大容器包含小容器 开辟空间 取小空间的size即可vector<int> vTarget;vTarget.resize(min(v1.size(),v2.size()));
//获取交集//返回值是目标容器的最后一个元素的迭代器地址vector<int>::iterator itEnd = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint);
}
int main() {test01();system("pause");return 0;
}
6.set_union 求两个集合的并集
/*函数原型:iterator set_union(iterator beg1 ,iterator end1 , iterator beg2 ,iterator end2 ,iterator dest);求两个集合的交集注意:两个容器的必须是有序序列beg1 容器1开始迭代器end1 容器1结束迭代器beg2 容器2开始迭代器end2 容器2结束迭代器dest 目标容器开始迭代器返回值为:目标容器的最后一个元素的迭代器地址
*/
void myPrint(int val) {cout<<val<<" ";
}
void test01() {
vector<int> v1;vector<int> v2;for (int i = 0; i < 10; i++) {v1.push_back(i);v2.push_back(i + 5);}//目标容器需要提前开辟空间vector<int> vTarget;vTarget.resize(v1.size()+v2.size());
//获取并集//返回值是目标容器的最后一个元素的迭代器地址vector<int>::iterator itEnd = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint);
}
int main() {test01();system("pause");return 0;
}
7.set_difference 求两个集合的差集
/*函数原型:iterator set_difference(iterator beg1 ,iterator end1 , iterator beg2 ,iterator end2 ,iterator dest);求两个集合的差集注意:两个容器的必须是有序序列beg1 容器1开始迭代器end1 容器1结束迭代器beg2 容器2开始迭代器end2 容器2结束迭代器dest 目标容器开始迭代器返回值为:目标容器的最后一个元素的迭代器地址
*/
void myPrint(int val) {cout<<val<<" ";
}
void test01() {
vector<int> v1;vector<int> v2;for (int i = 0; i < 10; i++) {v1.push_back(i);v2.push_back(i + 5);}//目标容器需要提前开辟空间vector<int> vTarget;//最特殊情况 两个容器没有交集 取两个容器中大的那个vTarget.resize(max(v1.size(),v2.size()));
//获取差集 注意v1和v2的差集 与 v2和v1的差集是不相同//返回值是目标容器的最后一个元素的迭代器地址vector<int>::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint);
}
int main() {test01();system("pause");return 0;
}
相关文章:
【C++编程语言】STL常用算法 算术生成和集合算法
1.算术生成算法概念 算法简介: accumlate 计算容器元素累计总和fill 向容器中添加元素 注意:算术生成算法属于小型算法 使用时包含头文件为#include<numeric> 2.accumulate /*函数原型:int accumulate(iterator beg ,iterator end…...
解放双手:VMLogin自动化工具的高效便捷
在现代工作环境中,时间和效率是我们追求的关键。幸运的是,随着技术的发展,自动化工具为我们提供了解放双手的机会。其中,防关联浏览器的自动化就是一种强大的工具,能够简化我们的工作流程并提升效率。本文将探讨浏览器…...
深度解析网络代理技术及其在网络安全和爬虫应用中的关键作用
在当今数字化时代,网络代理技术在维护网络安全、保护隐私以及实现高效数据获取方面发挥着不可或缺的作用。本文将全面解析Socks5代理、IP代理等关键技术,并探讨其在网络安全和爬虫开发中的重要作用。 1. Socks5代理与SK5代理:多功能代理协议…...
寻找二叉树的最低公共祖先节点
两个节点沿二叉树向上找,找到的第一个公共的节点 例:D和F之间的最低公共节点:B D → B; F → E → B; E和G最低公共节点:A E → B → A; G → C → A; B和F最低公共节点ÿ…...
python网络爬虫(二)基本库的使用urllib/requests
使用urllib 了解一下 urllib 库,它是 Python 内置的 HTTP 请求库,也就是说不需要额外安装即可使用。它包含如下 4 个模块。 request:它是最基本的 HTTP 请求模块,可以用来模拟发送请求。就像在浏览器里输入网址然后回车一样&…...
Kafka快速入门(最新版3.6.0)
文章目录 一、初识MQ1.1 什么是MQ1.2 同步和异步通讯1.1.1 同步通讯1.1.2 异步通讯 1.3 技术对比1.4 MQ的两种模式 二、初识Kafka2.1 Kafka的使用场景2.2 Kafka基本概念2.3 Topic与Partition 三、Kafka基本使用3.1 部署前的准备3.2 启动kafka服务器3.3 Kafka核心概念之Topic3.4…...
CTF/AWD竞赛标准参考书+实战指南:《AWD特训营》
作者简介: 懒大王敲代码,正在学习嵌入式方向有关课程stm32,网络编程,数据结构C/C等 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 《AWD特训营》 前言 内容简介 读者对象 本书目录 前言…...
从零开始 Spring Cloud 15:多级缓存
从零开始 Spring Cloud 15:多级缓存 多级缓存架构 传统的缓存使用 Redis,大致架构如下: 这个架构存在一些问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时,会对数据库产生冲…...
Adobe产品2024
一、软件下载: 二、软件介绍: Adobe公司旗下的产品在影视后期、平面设计等领域有着无可取代的地位。在创意和设计领域中,产品有多达 21 个,包括 Photoshop、Illustrator、InDesign、Premiere Pro、After Effects 和 Acrobat Pro …...
【MySQL】8.0新特性、窗口函数和公用表表达式
文章目录 1. 新增特性2. 移除旧特性2.1 优点2.2 缺点 3. 新特性1:窗口函数3.1 使用窗口函数前后对比3.2 窗口函数分类3.3 语法结构3.4 分类讲解3.4.1 序号函数3.4.1.1 ROW_NUMBER()函数3.4.1.2 RANK()函数3.4.1.3 DENSE_RANK()函数 3.4.2 分布函数3.4.2.1 PERCENT_R…...
华为云云耀云服务器L实例评测|使用clickhouse-benchmark工具对ClickHouse的性能测试
目录 引言 1 ClickHouse简介 2 利用docker安装ClickHouse 2.1 安装Docker 2.2 下载ClickHouse Docker镜像 2.3 创建ClickHouse容器 2.4 访问ClickHouse 3 创建测试表 4 运行 clickhouse-benchmark 5 分析结果 结语 引言 利用华为云的云耀云服务器L实例,…...
枚举最大值+ds:1887D
https://codeforces.com/problemset/problem/1887/D 左边区间最大值小于右边区间最小值 肯定要离线 感觉分治? 枚举左边区间最大值 求出其影响范围,推出左端点可取范围 然后可取右端点就是一段连续大于此值得区间 也就是左端点在一段区间时右端点可…...
模拟最终成绩计算过程
首先输入大于2的整数作为评委人数,然后依次输入每个评委的打分,要求每个分数介于0~100.输入完所有评委打分之后,去掉一个最高分,去掉一个最低分,剩余分数的平均分即为该选手的最终得分 (1) while True:try:n int(input(请输入评委人数:))assert n > 2# 跳出循环breakexce…...
Android10 修改开发者选项中动画缩放默认值
Android 10 修改开发者选项中动画因子默认值 开发者选项中有三个动画因子 “Window animation scale” :窗口动画缩放“Transition animation scale” :过渡动画缩放“Animator duration scale” :动画程序时长缩放 修改默然值 默认3个因子都是1.0,现在修改为默认0.…...
【2023年11月第四版教材】软考高项极限冲刺篇笔记(3)
8 成本管理 成本类型:可变成本、固定成本、直接成本、间接成本、机会成本、沉没成本 应急储备:成本基准内 管理成本:成本基准外 进度偏差:SV,SPI 成本管理主要是规划和控制 成本估算 类比估算 参数估算 自上而下估算 三点估算 备选方案分析 储备分析 质量成本 总资…...
c语言进阶部分详解(详细解析自定义类型——结构体,内存对齐,位段)
上篇文章介绍了一些常用的字符串函数,大家可以去我的主页进行浏览。 各种源码大家可以去我的github主页进行查找:Nerosts/just-a-try: 学习c语言的过程、真 (github.com) 今天要介绍的是:结构体的相关内容 目录 一.结构体类型的声明 1.…...
Mysql第三篇---响应太慢?数据库卡顿?如何优化?
Mysql第三篇—响应太慢?数据库卡顿?如何优化? 统计SQL的查询成本:last_query_cost 一条SQL查询语句在执行前需要确定查询执行计划,如果存在多种执行计划的话,MySQL会计算每个执行计划所需要的成本&#x…...
【计算机网络】HTTP 协议的基本格式以及 fiddler 的用法
HTTP协议的基本格式如下: 1.请求行: 包括请求THHP协议的版本、请求URI(资源路径)和HTTP方法(如GET、POST、PUT、DELETE等) GET/example.html HTTP/1.1 GET表示请求方法,/example.html表示请求的…...
人大金仓与哪吒科技达成战略合作,加快推动智慧港口建设
近日,人大金仓与哪吒港航智慧科技(上海)有限公司(以下简称“哪吒科技”)达成战略合作。双方旨在共享优势资源,联合为港口企业转型升级提供完备的技术支撑与行业解决方案。人大金仓总裁杜胜、哪吒科技总经理…...
FFmpeg工具使用集
FFmpeg工具使用集 About FFmpeg Java调用FFmpeg FFmpeg 工具: FFMPEG 用于转换多媒体文件的 命令行工具 格式之间( ffmpeg\bin\ffmpeg.exe ) ffplay 基于 SDL 和 FFmpeg 库的简单媒体播放器 ( ffmpeg\bin\ffplay.exe ࿰…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...
