●for_each
1.功能描述:
快速遍历容器元素
2.查看for_each定义下底层代码的函数原型:
3.代码及其结果展示:
向vector容器中插入5个元素,分别用普通函数和仿函数去遍历输出该容器中的元素。
#include<iostream> #include<algorithm> //算法头文件 #include<vector> using namespace std; void printvector_1(int value) { cout << value << " "; } class printvector_2 { public: void operator()(const int value) { cout << value << " "; } }; void text() { vector<int>v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(5); //普通函数 for_each(v.begin(), v.end(),printvector_1); cout << endl; //仿函数 for_each(v.begin(), v.end(), printvector_2()); } int main() { text(); }
●transform
1.功能描述:
搬用容器到另一个容器中
2.查看transform定义下底层代码的函数原型:
3. 代码及其结果展示:
向源容器v中插入5个元素,用普通函数将源容器v中的元素遍历搬用到v_vector_1中并且遍历输出,再用仿函数将源容器v中的元素遍历搬用到v_vector_2中并且遍历输出。
#include<iostream> #include<algorithm> //算法头文件 #include<vector> using namespace std; //普通函数(搬用+遍历) int transform_vector_1(int value) { return value; } void printvector_1(int value) { cout << value << " "; } //仿函数(搬用+遍历) class transform_vector_2 { public: int operator()(const int value) { return value; } }; class printvector_2 { public: void operator()(const int value) { cout << value << " "; } }; void text() { vector<int>v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(5); cout << "普通函数" << endl; vector<int>v_target_1; //目标容器1 v_target_1.resize(v.size()); //给目标容器1与容器v相同的空间 transform(v.begin(),v.end(),v_target_1.begin(),transform_vector_1); cout << "v_vector_1 ="; for_each(v_target_1.begin(), v_target_1.end(), printvector_1); cout << endl; cout << "仿函数" << endl; vector<int>v_target_2; //目标容器2 v_target_2.resize(v.size()); //给目标容器2与容器v相同的空间 transform(v.begin(), v.end(), v_target_2.begin(), transform_vector_2()); cout << "v_vector_2 ="; for_each(v_target_2.begin(), v_target_2.end(), printvector_2()); } int main() { text(); }