- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
std::function<int()> void f1()
{
int a, b, c, d, ..., x, y, z;
return [=] { return a + b + c; };
}
对比
std::function<int()> void f2()
{
int a, b, c, d, ..., x, y, z;
return [a, b, c] { return a + b + c; };
}
不用说,前者比后者更短、更方便、更优雅。
不过,我还是担心:
从性能的角度来看,后者总是比前者更好吗?
标准是否保证 lambda 表达式仅捕获必要的变量?即在前一个例子中,只捕获了 a, b, c,未使用的变量 d, ..., x, y, z 没有。
最佳答案
该标准保证,如果您执行默认捕获,则该默认捕获将从周围环境中捕获的唯一变量是您在 lambda 中实际使用的变量。
因此,指定要捕获的单个变量可以作为您期望使用的文档,但绝不应该影响性能。
对于任何关心的人,标准中的确切措辞是 (§5.1.2/11, 12):
11 If a lambda-expression has an associated capture-default and its compound-statement odr-uses (3.2)
this
or a variable with automatic storage duration and the odr-used entity is not explicitly captured, then the odr-used entity is said to be implicitly captured; such entities shall be declared within the reaching scope of the lambda expression. [Note elided]12 An entity is captured if it is captured explicitly or implicitly. [...]
总结
隐式捕获规范([=]
或 [&]
)只会捕获 lambda 中使用的变量,因此隐式与显式捕获永远不会影响性能。
关于c++ - 总是在 lambda 表达式中捕获所有内容是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19018100/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!