STL算法(19)——for_each()和transform()的比较
2016-08-19 08:37
579 查看
STL-算法 修改性算法:
for_each() generate()
copy() generate_n()
copy_backwards() replace()
transform() replace_if()
merge() replace_copy()
swap_ranges() replace_copy_if()
fill()
fill_n()
for_each() 速度快 不灵活 只有一个区间的时候用
transform() 速度慢 非常灵活 两个或者两个区间只能用transform
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
// 这个参数必须是引用传递,必须要修改
void square(int & elem)
{
elem = elem * elem;
}
// transfrom 的要求 参数的传递不需要传引用,传值就行 ,但是要有返回值
int square2(int elem)
{
return elem * elem;
}
int main()
{
vector<int> a;
vector<int> b;
for (int i = 1; i <= 9; i++)
{
a.push_back(i);
b.push_back(i);
}
cout << "向量a:" << endl;
for (vector<int>::iterator iter = a.begin(); iter != a.end(); iter++)
cout << *iter << ' ';
cout << endl;
for_each(a.begin(), a.end(), square);// 速度快,传引用
for (vector<int>::iterator iter = a.begin(); iter != a.end(); iter++)
cout << *iter << ' ';
cout << endl;
cout << "向量b:" << endl;
for (vector<int>::iterator iter = b.begin(); iter != b.end(); iter++)
cout << *iter << ' ';
cout << endl;
transform(b.begin(), b.end(), b.begin(), square2);// 速度慢,传值
for (vector<int>::iterator iter = b.begin(); iter != b.end(); iter++)
cout << *iter << ' ';
cout << endl;
//
system("pause");
return 0;
}
for_each() generate()
copy() generate_n()
copy_backwards() replace()
transform() replace_if()
merge() replace_copy()
swap_ranges() replace_copy_if()
fill()
fill_n()
for_each() 速度快 不灵活 只有一个区间的时候用
transform() 速度慢 非常灵活 两个或者两个区间只能用transform
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
// 这个参数必须是引用传递,必须要修改
void square(int & elem)
{
elem = elem * elem;
}
// transfrom 的要求 参数的传递不需要传引用,传值就行 ,但是要有返回值
int square2(int elem)
{
return elem * elem;
}
int main()
{
vector<int> a;
vector<int> b;
for (int i = 1; i <= 9; i++)
{
a.push_back(i);
b.push_back(i);
}
cout << "向量a:" << endl;
for (vector<int>::iterator iter = a.begin(); iter != a.end(); iter++)
cout << *iter << ' ';
cout << endl;
for_each(a.begin(), a.end(), square);// 速度快,传引用
for (vector<int>::iterator iter = a.begin(); iter != a.end(); iter++)
cout << *iter << ' ';
cout << endl;
cout << "向量b:" << endl;
for (vector<int>::iterator iter = b.begin(); iter != b.end(); iter++)
cout << *iter << ' ';
cout << endl;
transform(b.begin(), b.end(), b.begin(), square2);// 速度慢,传值
for (vector<int>::iterator iter = b.begin(); iter != b.end(); iter++)
cout << *iter << ' ';
cout << endl;
//
system("pause");
return 0;
}
相关文章推荐
- STL常用遍历算法for_each和transform的比较
- STL算法 ------- transform() 与 for_each()比较
- STL常用遍历算法for_each和transform的比较
- STL_算法 for_each 和 transform 比较
- STL遍历算法 “for_each ”,“transform”
- STL通用算法: for_each,c++11标准范围for,transform.
- STL算法学习-- for_each( ) 与 transform()
- STL学习之十四:常用算法 for_each 和 transform以及adjacent_find的示例代码
- C++ STL 中有关于for_each() 和 transform() 算法
- STL中的两个算法for_each与transform
- 【C++ STL学习之六】STL算法之for_each
- STL学习笔记----9.STL算法之 for_each()
- 记录 C++ STL 中 一些好用的函数--持续更新 (for_each,transform,count_if,find_if)
- c++ 标准模板库 STL 算法之 for_each 函数的使用用法详解
- STL与泛型编程<十七>:STL算法简介及for_each()算法
- STL算法之for_each
- STL_算法_for_each
- STL之bind2st for_each 和 transform
- for_each 和 transform比较
- STL_Algorithm5-math: random_shuffle, count, count_if, min_element, max_element, accumulate, for_each, transform