目錄
一、常用的算數算法
1.accmulate
2.fill
二、常用的集合算法
1.set_intersection
2.set_union
3.set_difference
一、常用的算數算法
包含頭文件為<numeric>
1.accmulate
函數原型
accmulate(iterator beg, iterator end, value)
// 計算元素累計和
// 開始迭代器
//?結束迭代器
// 初始值
2.fill
函數原型
fill(iterator beg, iterator end, value)
// 向容器中填充元素
// beg開始迭代器
// end 結束迭代器
// value 要填充的值
二、常用的集合算法
1.set_intersection
函數原型
set_intersection(iterator beg, iterator end, iterator beg2, iterator end2, iterator dest)
// 求兩個集合的交集,兩個集合必須是有序序列
// beg1 容器1開始迭代器
// end 容器1結束迭代器
// beg2 容器2開始迭代器
// end2 容器2結束迭代器
// dest 目標容器開始迭代器
// 返回值為容器最后一個非零值對應的迭代器。因為容器的size可能大于交集的size,返回值就是交集最后一個元素對應的迭代器。
2.set_union
函數原型
set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)
//? 求兩個集合的并集
// 注意兩個集合必須是有序序列
// beg1 容器1開始迭代器
// end 容器1結束迭代器
// beg2 容器2開始迭代器
// end2 容器2結束迭代器
// dest 目標容器開始迭代器
3.set_difference
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<numeric>
using namespace std;
void test2()
{ vector<int> v;vector<int> v1;for(int i=0;i<10;i++){v.push_back(i);v1.push_back(i+5);}cout << "v - v1" << endl;vector<int> v2;v2.resize(v1.size()+v.size());vector<int>::iterator it_end = set_difference(v.begin(),v.end(),v1.begin(),v1.end(),v2.begin());for(vector<int>::iterator it=v2.begin();it!=it_end;it++){cout << *it << " ";}cout << endl;cout << "v1- v" << endl;it_end = set_difference(v1.begin(),v1.end(),v.begin(),v.end(),v2.begin());for(vector<int>::iterator it=v2.begin();it!=it_end;it++){cout << *it << " ";}cout << endl;
}int main()
{test2();return 0;
}