【STL】非变异算法之循环

    xiaoxiao2026-02-28  6

    for_each的使用

    实例1 简单的对数组和容器进行操作 #include <iostream> #include <algorithm> #include <vector> using namespace std; /for_each的函数 void printCube(int n) { cout<<n*n*n<<endl; } int main() { for_each 数组 int a[] = {0,1,2,3,4,5,6,7,8,9}; int len = sizeof(a)/sizeof(int); for_each(a,a+10,printCube); for_each 容器 vector<int>iVec1(a,a+10); for_each(iVec1.begin(),iVec1.end(),printCube); system("pause"); return 0; } 实例2 #include <iostream> #include <algorithm> #include <vector> using namespace std; class printInfo打印类 最大值 最小值 和 { private: int nSum; int nMax; int nMin; int count; public: printInfo():count(0),nSum(0){} int getnSum(){return nSum;} int getnMax(){return nMax;} int getnMin(){return nMin;} void operator() (int x) { if(count == 0) { nMax = x; nMin = x; } else { if(nMin > x) nMin = x; if(nMax < x) nMax = x; } count++; nSum += x; } }; int main() { int a[] = {1,2,3,4,5,6,7,8,9}; int len = sizeof(a)/sizeof(a[0]); printInfo P = for_each(a,a+len,printInfo()); cout<<"最大值:"<<P.getnMax()<<endl; cout<<"最小值:"<<P.getnMin()<<endl; cout<<"和:"<<P.getnSum()<<endl; system("pause"); return 0; }

    3.实例3

    #include <iostream> #include <algorithm> #include <vector> #include <functional> using namespace std; 打印类 最大值 最小值 和 template<class T,class T1> class printInfo:public unary_function<T,T1> { private: T nSum; T nMax; T nMin; int count; public: printInfo():count(0),nSum(0){} T getnSum(){return nSum;} T getnMax(){return nMax;} T getnMin(){return nMin;} T1 operator() (T x) { if(count == 0) { nMax = x; nMin = x; } else { if(nMin > x) nMin = x; if(nMax < x) nMax = x; } count++; nSum += x; } }; int main() { int a[] = {1,2,3,4,5,6,7,8,9}; int len = sizeof(a)/sizeof(a[0]); printInfo<int,void> P = for_each(a,a+len,printInfo<int,void>()); cout<<"最大值:"<<P.getnMax()<<endl; cout<<"最小值:"<<P.getnMin()<<endl; cout<<"和:"<<P.getnSum()<<endl; system("pause"); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1307478.html
    最新回复(0)