STL学习(?、常用的算数算法和集合算法)
目录
一、常用的算数算法
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;
}