目录
STL拷贝算法
copy算法
STL替换算法
replace算法
replace_if算法
swap交换算法
accumulate算法(总和,算数生成算法)
fill填充算法
交并差算法
交集
并集
差集
STL拷贝算法
copy算法
copy(原容器迭代器起始,原容器迭代器终止,目标容器迭代器起始)
copy(v1.begin(),v1.end(),v2.begin());
STL替换算法
replace算法
replace(容器迭代器起始,容器迭代器终止,原元素,替换元素)
replace(v1.begin(),v1.end(),3,666);//将3替换成666replace_if算法
replace_if(容器迭代器起始,容器迭代器终止,符合条件的原元素,替换元素)
class GreatTwo {//仿函数 public: bool operator() (int val) { if (val > 2) return true; return false; } };replace_if(v1.begin(),v1.end(), GreatTwo(),233);//将大于2替换成233swap交换算法
swap(容器名1,容器名2)
vectorv1; vector v2; swap(v1,v2); accumulate算法(总和,算数生成算法)
#include#include accumulate(容器迭代器起始,容器迭代器终止, 累加初始值);
int num = accumulate(v1.begin(), v1.end(), 0);
fill填充算法
#include#include vectorv1; v1.resize(10); fill(v1.begin(), v1.end(), 233); //从头到尾填充成233
交并差算法
交集
set_intersection(容器1迭代器起始,容器1迭代器终止,容器2迭代器起始,容器2迭代器终止,容器3迭代器起始)
·容器1、2要有序。
vectorv1; vector v2; for (int i = 0; i < 5; i++) { v1.push_back(i); //0~4 v2.push_back(i + 2); //2~6 交集2~4 } vector v3;//目标容器 v3.resize(min(v1.size(),v2.size()));//并集,元素个数不会超过元素最少容器的个数。 vector ::iterator itEnd=set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
并集
set_union(容器1迭代器起始,容器1迭代器终止,容器2迭代器起始,容器2迭代器终止,容器3迭代器起始)
·容器1、2要有序。
vectorv1; vector v2; for (int i = 0; i < 5; i++) { v1.push_back(i); //0~4 v2.push_back(i + 2); //2~6 并集0~6 } vector v3;//目标容器 int num = v1.size() + v2.size(); v3.resize(num);//最差的情况是两容器无相同元素,故相加 vector ::iterator itEnd=set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin()); for_each(v3.begin(),itEnd,func0());
差集
set_difference(容器1迭代器起始,容器1迭代器终止,容器2迭代器起始,容器2迭代器终止,容器3迭代器起始)
·容器1、2要有序。
vectorv1; vector v2; for (int i = 0; i < 5; i++) { v1.push_back(i); //0~4 v2.push_back(i + 2); //2~6 交集2~4 } vector v3;//目标容器 v3.resize(min(v1.size(), v2.size()));//并集,元素个数不会超过元素最少容器的个数。 vector ::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());



