20240514,算法(算数生成,集合)

还有一个大案例,那个就不急了,完结撒花,起码C++是打代码没什么大问题的完结,不像C,还要我返工/笑哭

常用算数生成算法

属于小算法,头文件**#include <numeric>**
accumulate //计算容器累计总和
fill //容器中添加元素

ACCUMULATE

accumulate //计算容器累计总和
accumulate(begin,end,val) /val==累加起始值

cpp 复制代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
/*
accumulate(begin,end,val)  //val==起始值
*/
void myprint(int val) {
	cout << val << "  ";
}
void test01() {
	vector<int>v;
	for (int i = 0; i <= 100; i++) {
		v.push_back(i);
	}
	int sum=accumulate(v.begin(), v.end(), 0);
	cout <<sum<< endl;
	sum = accumulate(v.begin(), v.end(), 1000);
	cout << sum << endl;

}
void test02() {
	
}
int main() {
	test01();
	test02();
	return 0;
}
FILL

fill //容器中添加元素 fill(begin,end,val)

cpp 复制代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
/*
fill(begin,end,val)  
*/
void myprint(int val) {
	cout << val << "  ";
}
void test01() {
	vector<int>v;
	v.resize(10);
	fill(v.begin(), v.end(), 1000);
	for_each(v.begin(), v.end(), myprint);
	cout << endl;
}
void test02() {
	
}
int main() {
	test01();
	test02();
	return 0;
}

常用集合算法

set_intersection //交集

set_union //并集

set_difference //差集
都必须是有序数列,返回迭代器

SET_INTERECTION

set_intersection //交集 set_intersection(beg1,end1,beg2,end2,iterator dest)返回迭代器

cpp 复制代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
//#include<numeric>
using namespace std;
/*
set_intersection(beg1,end1,beg2,end2,iterator dest)
*/
void myprint(int val) {
	cout << val << "  ";
}
void test01() {
	vector<int>v;
	vector<int>v1;
	vector<int>v2;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
		v1.push_back(i+5);
	}
	//v2.resize(v.size() < v1.size()?v.size():v1.size());//提前开辟
	v2.resize(min(v.size(), v1.size()));
	vector<int>::iterator iEnd = set_intersection(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin());
	for_each(v2.begin(), v2.end(), myprint);
	cout << endl;
	for_each(v2.begin(), iEnd, myprint);//用返回的迭代器打印输出
}
void test02() {
	
}
int main() {
	test01();
	test02();
	return 0;
}
SET_UNION

set_union //并集 set_intersection(beg1,end1,beg2,end2,iterator dest)

cpp 复制代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

void myprint(int val) {
	cout << val << "  ";
}
void test01() {
	vector<int>v;
	vector<int>v1;
	vector<int>v2;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
		v1.push_back(i+5);
	}
	v2.resize(v.size()+v1.size());
	vector<int>::iterator iEnd = set_union(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin());
	for_each(v2.begin(), v2.end(), myprint);
	cout << endl;
	for_each(v2.begin(), iEnd, myprint);//用返回的迭代器打印输出
}
void test02() {
	
}
int main() {
	test01();
	test02();
	return 0;
}
SET_DIFFERENCE

set_difference //差集 set_difference (beg1,end1,beg2,end2,iterator dest)

cpp 复制代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

void myprint(int val) {
	cout << val << "  ";
}
void test01() {
	vector<int>v;
	vector<int>v1;
	vector<int>v2;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
		v1.push_back(i+5);
	}
	v2.resize(v.size());
	vector<int>::iterator iEnd = set_difference(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin());
	for_each(v2.begin(), v2.end(), myprint);
	cout << endl;
	for_each(v2.begin(), iEnd, myprint);//用返回的迭代器打印输出
	cout << endl;


	fill(v2.begin(), v2.end(), 0);
	for_each(v2.begin(), v2.end(), myprint);
	cout << endl;
	iEnd = set_difference(v1.begin(), v1.end(), v.begin(), v.end(), v2.begin());
	for_each(v2.begin(), iEnd, myprint);//用返回的迭代器打印输出
	cout << endl;
}
void test02() {
	
}
int main() {
	test01();
	test02();
	return 0;
}
相关推荐
黎阳之光2 小时前
黎阳之光:全域实景立体管控,重构智慧电厂与变电站数字孪生新范式
大数据·人工智能·算法·安全·数字孪生
嘻嘻哈哈樱桃2 小时前
数据流中的中位数 力扣--160
算法·leetcode·职场和发展
Huangjin007_2 小时前
【C++ STL篇(四)】一文拿捏vector常用接口!
开发语言·c++·学习
老约家的可汗2 小时前
深入浅出:Map与Set的核心原理与使用场景
数据结构·算法
草莓熊Lotso2 小时前
Linux 线程同步与互斥(一):彻底搞懂线程互斥原理、互斥量底层实现与 RAII 封装
linux·运维·服务器·开发语言·数据库·c++
j_xxx404_2 小时前
力扣算法题:字符串(最长公共前缀|最长回文子串)
c++·算法·leetcode
承渊政道2 小时前
【递归、搜索与回溯算法】(穷举vs暴搜vs深搜vs回溯vs剪枝:一文讲清概念与用法)
数据结构·c++·算法·决策树·深度优先·剪枝·宽度优先
承渊政道2 小时前
【递归、搜索与回溯算法】(综合练习:一网打尽常见题型分类总结与方法归纳)
c++·算法·决策树·分类·深度优先·哈希算法·宽度优先
我不是懒洋洋2 小时前
【数据结构】栈和链表基本方法的实现
c语言·开发语言·数据结构·c++·链表·青少年编程·ecmascript
邪修king2 小时前
C++ vector 超全攻略:核心知识点、STL 生态联系与避坑指南
c语言·c++·面试