- 模板使用,求最大值
#includenamespace guodong { template T max(T head) { return head; } template T max(T head, Args... args) { T t = max(args...); return (head > t)?head:t; } } // end of namespace int main() { int m = guodong::max(15, 12, 73,85,12,999,25); std::cout< 结果:999
2. Lambda表达式#includeusing namespace std; int main(){ int x=1,y=2,z=0; auto add = [&z](auto x,auto y){z=x+y;return z;}; auto res = add(x,y); cout< 结果:3,3
备注:
[] // 沒有定义任何变量。使用未定义变量会引发错误。 [x, &y] // x以传值方式传入(默认),y以引用方式传入。 [&] // 任何被使用到的外部变量都隐式地以引用方式加以引用。 [=] // 任何被使用到的外部变量都隐式地以传值方式加以引用。 [&, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用。 [=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。Lambda 表达式的定义形式如下:
[外部变量访问方式说明符] (参数表) -> 返回值类型 { 语句块 }#include#include using namespace std; int main() { int a[4] = { 1, 2, 3, 4 }; int total = 0; for_each(a, a + 4, [&](int & x) { total += x; x *= 2; }); cout << total << endl; //输出 10 for_each(a, a + 4, [=](int x) { cout << x << " "; }); return 0; } 结果:
10
2 4 6 8#includeusing namespace std; int main() { int x = 100,y=200,z=300; auto ff = [=,&y,&z](int n) { cout < 结果:
100
225
201, 301



