2014年01月20日 星期一 21:27
Function Objects 和 Lambdas 是C++语言的高级特性,其中Lambdas是C++11的新近引入的特性。两者对于C++容器的算法有很大意义。简单的应用实例如下:
#include <iostream> #include <array> #include <algorithm> #include <functional> using namespace std; class SumValue { private: int sum; public: SumValue() : sum(0) { } void operator() (int elem) { sum+=elem; } int getResult() { return sum; } }; int main() { array<int,10> ary={3,2,44,1,52,65,13,18,239,120}; sort(ary.begin(),ary.end()); SumValue sumv=for_each(ary.begin(),ary.end(),SumValue()); cout << sumv.getResult() << endl; transform(ary.begin(),ary.end(),ary.begin(),negate<int>()); for(auto x : ary) { cout << x << endl; } fill(ary.begin(),ary.end(),10); int sum=0; for_each(ary.begin(),ary.end(), [&sum] (int elem) { sum+=elem; } ); cout << sum << endl; return 0; }
参考资料:
Zeuux © 2024
京ICP备05028076号