【C++常用算法】STL基础语法学习 | 算数生成算法集合算法

news2024/11/27 3:52:09


目录

●accumulate

●fill

●set_intersection

●set_union

●set_difference


 ●accumulate

1.功能描述:

        计算容器内元素累计总和

2.查看accumulate定义下底层代码的函数原型:

3.向vector容器中插入0~100,使用accumulate算法去计算其和并输出

#include<iostream>
#include<vector>
#include<numeric>   //算数生成算法的头文件
using namespace std;
void text()
{
	vector<int>v;
	for (int i = 0; i <= 100; i++)
	{
		v.push_back(i);
	}
	int sum=accumulate(v.begin(), v.end(), 0);
	cout << "sum=" << sum << endl;
}
int main()
{
	text();
}


 ●fill

1.功能描述:

        向容器内填充指定的元素值

2.查看fill定义下底层代码的函数原型:

3.创建一个vector容器,给其重新规定5个空间大小,向其里面填充10并且输出

#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>	//算数生成算法的头文件
using namespace std;
void printvector(int value)
{
	cout << value << " ";
}
void text()
{
	vector<int>v;
	v.resize(5);
	fill(v.begin(), v.end(), 10);
	for_each(v.begin(),v.end(),printvector);
}
int main()
{
	text();
}


●set_intersection

1.功能描述:

        求两个容器的交集(有序序列)

2.查看set_intersection定义下底层代码的函数原型:

3.创建容器1和容器2,分别向容器中插入1~10和5~14,使用set_intersection去求两容器的交集到指定容器中并且输出

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
	cout << value << " ";
}
void text()
{
	vector<int>v1;
	vector<int>v2;
	for (int i = 1, j = 1, k = 5; i <= 10; i++, j++, k++)
	{
		v1.push_back(j);
		v2.push_back(k);
	}
	//创建目标容器
	vector<int>v;
	//给目标容器开辟空间(一种特殊情况,开辟空间为两集合容器的最小值)
	v.resize(min(v1.size(), v2.size()));
	//求交集
	vector<int>::iterator p_end;   //用迭代器去接受最后一个交集元素,在遍历输出时使用
	p_end=set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v.begin());
	
	for_each(v.begin(),p_end,printvector);
}	
int main()
{
	text();
}


●set_union

1.功能描述:

        求两集合的并集(有序序列)

2.查看set_union定义下底层代码的函数原型:

3.创建容器1和容器2,分别向容器中插入1~10和5~14,使用set_union去求两容器的并集到指定容器中并且输出

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
	cout << value << " ";
}
void text()
{
	vector<int>v1;
	vector<int>v2;
	for (int i = 1, j = 1, k = 5; i <= 10; i++, j++, k++)
	{
		v1.push_back(j);
		v2.push_back(k);
	}
	//创建目标容器
	vector<int>v;
	//给目标容器开辟空间(一种特殊情况,开辟空间为两集合容器空间的加和)
	v.resize(v1.size()+v2.size());
	//求并集
	vector<int>::iterator p_end;   //用迭代器去接受最后一个并集元素,在遍历输出时使用
	p_end=set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v.begin());
	
	for_each(v.begin(),p_end,printvector);
}	
int main()
{
	text();
}


 ●set_difference

1.功能描述:

        求两个集合的差集

2.查看set_difference定义下底层代码的函数原型:

3.创建容器1和容器2,分别向容器中插入1~10和5~14,使用set_difference去分别求两容器v1-v2和v2-v1的差集到指定容器中并且输出

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
	cout << value << " ";
}
void text()
{
	vector<int>v1;
	vector<int>v2;
	for (int i = 1, j = 1, k = 5; i <= 10; i++, j++, k++)
	{
		v1.push_back(j);
		v2.push_back(k);
	}
	cout << "容器1差集容器2:" << endl;
	vector<int>v_;//创建目标容器
	v_.resize(max(v1.size(),v2.size()));//给目标容器开辟空间(一种特殊情况,开辟空间为两集合容器的最大值)
	vector<int>::iterator p_end_1;   //,求差集用迭代器去接受最后一个差集元素,在遍历输出时使用
	p_end_1=set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), v_.begin()); //v1-v2
	for_each(v_.begin(),p_end_1,printvector);

	cout << endl;

	cout << "容器2差集容器1:" << endl;
	vector<int>v__;
	v__.resize(max(v1.size(), v2.size()));
	vector<int>::iterator p_end_2;
	p_end_2 = set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), v__.begin()); //v2-v1
	for_each(v__.begin(), p_end_2, printvector);
}	
int main()
{
	text();
}


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

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

相关文章

RabbitMQ的五大常用模型介绍以及SpringAMQP的使用

目录MQ的介绍使用MQ的好处技术对比RabbitMQ的使用Docker启动MQ角色介绍五大常用消息模型使用SpringAMQP模板简单队列模型工作队列模型广播模型 Fanout路由模式 Direct主题模式 TopicMQ的介绍 MQ&#xff0c;MessageQuene即 消息队列&#xff0c;是程序与程序之间的异步通信一种…

spring的IOC与DI小案例

注&#xff1a;本博客用于自学&#xff0c;如有错误&#xff0c;敬请指正。 一、首先要了解的概念 IOC是一种思想&#xff1a;将创建、初始化对象的控制权交给IOC容器 IOC容器&#xff1a;用来装对象的容器 Bean&#xff1a;IOC容器中装的对象 DI&#xff1a;将IOC容器种Bean…

打破光缆资源管理难题

如何打破光缆资源管理难题&#xff0c;将光缆资源价值最大化&#xff0c;相信是每个运维人都关心的焦点问题。 一、背景 全业务发展到今天&#xff0c;我们逐渐意识到&#xff0c;市场竞争的核心已聚焦到传输资源。从拼资源总量到拼资源管理&#xff0c;传统的运维管理模式面临…

【每日一题】【LeetCode】【第九天】存在重复元素

解决之路 题目描述 测试案例&#xff08;部分&#xff09; 第一次 关键就是看是否有重复元素&#xff0c;暴力解法就是双循环&#xff0c;然后有相同元素就返回True&#xff0c;否则就等循环结束&#xff0c;返回False。 但是自己想到了另一个只需要一个循环的解法。用一个…

C++11 简化 “策略模式” 的一种思路

策略模式是一种定义一系列算法的模式&#xff0c;从概念上看&#xff0c;所有这些算法完成的都是相同接口的工作&#xff08;只是实现不同&#xff09;&#xff0c;它可以以相同的方式调用所有的算法&#xff0c;减少了各种算法类与使用算法的类之间的耦合。实践中只要在分析过…

开发者工具中performance面板解析

目录总览设置面板网络性能总览图火焰图&#xff1a;耗费的时间相关信息总览 如图&#xff0c;主要分为以下4个方面 设置面板 1&#xff0c; 不刷新页面进行录制 2&#xff0c;刷新页面进行录制 3&#xff0c;删除性能展示页面 4&#xff0c;上传本地的性能页面 5&#xff0c…

若依mybatis升级mybatis-plus,其他也适用

若依mybatis升级mybatis-plus,其他也适用 本文档记录若依mybatis升级plus,其他也类似 文章目录若依mybatis升级mybatis-plus,其他也适用第一步 修改ruoyi-common的pom.xml第二步 修改ruoyi-admin的application.yml第三步 修改ruoyi-framework的MyBatisConfig.java开始测试1. 修…

一、计算机系统概论

文章目录一、计算机系统简介1.计算机软硬件概念2.计算机系统的层次结构&#xff08;1&#xff09;现代计算机&#xff08;2&#xff09;发展&#xff08;3&#xff09;软硬件分布3.计算机组成和计算机体系结构二、计算机的基本组成1.冯诺依曼计算器2.计算机硬件框图3.计算机工作…

android架构拆分方案-编译相关方案与技术

接上文https://blog.csdn.net/dongyi1988/article/details/128617738直接拆分那么在代码和做包过程中&#xff0c;需要用到分仓&#xff0c;super.img、boot、OTA升级包的拆分与组合&#xff0c;vendor与system相关依赖处理&#xff0c;开机验证链还必须给镜像签名。代码管理定…

VisualODX——ODX数据自动转换工具

在创建ODX数据库的过程中&#xff0c;我们需要录入大量的数据以及应对多种数据格式。这不仅费时费力&#xff0c;而且还需要很高的人力成本&#xff0c;并且其错误率也高&#xff0c;从而导致了效率低下、开发速度缓慢。基于多年的汽车行业诊断经验&#xff0c;Softing开发了Vi…

基于微信小程序的课程分享平台小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏览器…

xv6-lab3: page table

文章目录1.speed up system call2. print page3. Detecting which pages have been accessedwhere is page table?function of page table?how to get arguments from user to kernel? – reference:https://stackoverflow.com/questions/46870509/how-to-pass-a-value-into…

风速记录仪大屏幕液晶显示全中文操作菜单操作简单

风速记录仪功能特点◆本机体积小巧美观&#xff0c;大屏幕液晶显示&#xff0c;全中文操作菜单&#xff0c;操作简单&#xff0c;性能可靠&#xff0c;记录间隔可根据要求从1分至24小时任意设置。&#xff08;但由于存储器空间有限&#xff0c;设置后也可随时查看存储信息&…

【阶段三】Python机器学习09篇:机器学习项目实战:决策树回归模型

本篇的思维导图: 项目背景 决策树除了能进行分类分析,还能进行回归分析,即预测连续变量,此时的决策树称为回归决策树。回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回归模型,本项目应用决策树回归模型进行探索新冠疫情、原材料、人工、物流等因素对…

generalized focal loss之quality focal loss(附代码)

参见paper 其中包含有Quality Focal Loss 和 Distribution Focal Loss。 先来说一下Quality Focal Loss, 在这之前&#xff0c;先要了解一下Focal Loss, 在这篇文章里有写过。 它主要是解决class imbalance&#xff0c;同时降低容易分类的weight&#xff0c;使训练更集中到难…

集成开发工具IDEA导入新项目,update index时间过程

集成开发工具IDEA导入新项目&#xff0c;update index时间过程&#xff0c;一般这种场景出现在&#xff1a; 1.继承开发工具比较新&#xff08;使用了优化的索引算法&#xff0c;这种算法一般是前期编译比较慢&#xff0c;一旦编译完&#xff0c;存入缓存&#xff0c;后期搜索就…

C语言经典100例(008,009,010)

题目&#xff1a;输出9*9口诀。 程序分析&#xff1a;分行与列考虑&#xff0c;共 9 行 9 列&#xff0c;i 控制行&#xff0c;j 控制列。 程序源代码&#xff1a; #include<stdio.h> int main() {int i,j,result;printf("\n");for (i1;i<10;i){for(j1;j…

fork()||fork(),循环fork()与\n

fork()||fork()输出几个A&#xff1f;父进程左边的fork()产生一个子进程&#xff08;1&#xff09;&#xff0c;父进程fork返回值>0,||不执行右边。子进程&#xff08;1&#xff09;中fork()返回0&#xff0c;执行||右边的fork()产生第二个子进程&#xff08;2&#xff09;到…

电脑蓝屏怎么解决?一键快速解决蓝屏问题

电脑蓝屏也是一个经常出现的情况&#xff0c;让人十分头疼。蓝屏的原因有很多&#xff0c;但大多数是由内存条、硬盘或散热系统造成的。电脑蓝屏怎么解决&#xff1f;遇到这个问题&#xff0c;可以从下面四个方法来入手&#xff0c;一键快速解决电脑蓝屏问题&#xff01; 操作环…

Android 深入系统完全讲解(9)

3 JNI 调试 开发 android 应用&#xff0c;主要围绕着 java 语言&#xff0c;可是&#xff0c;如果我们需要追求性能&#xff0c;或者需要调用之前我们已经写好的 c c so 库的时候&#xff0c;或者和硬件打交道的时候&#xff0c;那么我们就会接触到 JNI&#xff08;java nati…