还有一个大案例,那个就不急了,完结撒花,起码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;
}