for_each()和transform()算法比较
1)STL 算法 – 修改性算法
for_each()
copy()
copy_backward()
transform()
merge()
swap_ranges()
fill()
fill_n()
generate()
generate_n()
replace
replace_if()
replace_copy()
replace_copy_if()
2)
for_each() 速度快 不灵活
transform() 速度慢 非常灵活
//一般情况下:for_each所使用的函数对象,参数是引用,没有返回值
void mysquare(int &num)
{
num = num * num;
}
//transform所使用的函数对象,参数一般不使用引用,而是还有返回值
int mysquare2(int num) //结果的传出,必须是通过返回值
{
return num = num * num;
}
void main_foreach_pk_tranform()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
vector<int>v2 = v1;
for_each(v1.begin(), v1.end(), mysquare);
printAA(v1);
cout << endl;
transform(v2.begin(), v2.end(), v2.begin(), mysquare2);
printAA(v2);
cout << endl;
}for_each()和transform()算法比较
1)STL 算法 – 修改性算法
fo