C Programer  - 讨论区

标题:C++ 语言基础:Function Objects 和 Lambdas

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;
}

参考资料:

http://www.cplusplus.com/reference/algorithm/

http://www.cplusplus.com/reference/functional/

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号