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

标签 c++ c++11 vector foreach

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

相关文章:

c++ - 如何配置 Vim 插件 YouCompleteMe 来读取 Makefile?

c++ - opencv中的巨大内存泄漏

c++ - C++中原子变量的线程安全初始化

c++ - 部分默认使用内部类型初始化模板模板参数

c++ - 如何将参数传递给排序的比较函数?

c++ - 有没有办法交叉/区分 std::map 和 std::set?

c++ - "5"有什么问题?纸上的一切都很好

c++ - std::strtol 和 std::stoi 之间有什么区别?

c++ - 添加两个不同大小的 vector : Optimal Run-time and Optimal Memory Management

c++ - 使用 std::vector 作为数据缓冲区