c – 这条线如何打印阵列?

c – 这条线如何打印阵列?,第1张

概述今天我在阅读一些代码时,偶然发现了这样的事情: 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; }? 你在这里 今天我在阅读一些代码时,偶然发现了这样的事情:

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 – 这条线如何打印阵列?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存