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 © 2025
京ICP备05028076号