int v[5] = {1,13,17,20,16};for_each(begin(v),end(v),[](int n){ cout << n << endl; });
我有点理解发生了什么.它使用std :: for_each函数打印数组v []的所有值.但是什么是[](int n){cout<< n<< ENDL; }?
解决方法 你在这里看到的是使用 lambda functions in C++(这是一个C 11功能).什么是lambda函数?基本上,它是一个可以在源代码中内联编写的函数.通过这样做,您可以轻松地创建内联快速函数,之前您需要编写单独的命名函数.
在你的情况下,这是正在发生的事情:
for_each(begin(v),[](int n){ cout << n << endl; }); ^^ ||
这是告诉编译器我们在这里创建的是一个lambda函数的标识符.
for_each(begin(v),[](int n){ cout << n << endl; }); ^^^^^ |||||
这是参数列表,在本例中是一个来自数组v []的整数.
for_each(begin(v),[](int n){ cout << n << endl; }); ^^^^^ |||||
从这里我们可以看到函数体.就像你要创建一个常规函数一样,只需将其与其余代码内联即可.
如前所述,lambda函数是内联函数,因此您可能想知道返回类型在哪里.如果lambda不是很复杂,那么它是可选的,因为编译器可以推断出什么是返回类型.在您的情况下,编译器知道您的函数什么都不返回.例如,如果您希望它显式返回一个int,您可以告诉编译器您希望函数返回的内容如下:
[] () -> int { return 2; };总结
以上是内存溢出为你收集整理的c – 这条线如何打印阵列?全部内容,希望文章能够帮你解决c – 这条线如何打印阵列?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)