我有一个包含 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/