gpt4 book ai didi

c++ - c++11 中的 for_each 函数

转载 作者:行者123 更新时间:2023-11-30 00:47:09 25 4
gpt4 key购买 nike

我有一个包含 5 个数字的整数 vector ,我很好奇 [&idx] 到底做了什么:

int idx = 0;
for_each ( x . begin (), x . end (), [&idx] ( const int & a ) { cout << idx ++ << " " << a << endl; } );`

为什么它不能像这样工作? :

int idx = 0;
for_each ( x . begin (), x . end (), ( const int & a, int & idx ) { cout << idx ++ << " " << a << endl; } );

从性能的角度来看,它比吗? :

for ( vector<int>::size_type i = 0; i < x . size (); i ++ )
cout << x[i] << endl;

最佳答案

I'm curious what exactly does [&idx] do

这就是 lambda 捕获。它设置 lambda 以引用 idx。它不能用作参数,因为 for_each 只将一个参数传递给谓词。如果您将 idx 改为参数,它将无法编译。

Also is it better from a performance point of view?

可能吧。如果你真的想知道,测试每一种方法。

关于c++ - c++11 中的 for_each 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35686554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com