如何在 std::array<> 上使用 std::for_each 并对每个元素应用 lambda 函数?

Amr*_*ady 3 c++ arrays c++11

我想将这三个功能结合在一起:

  • std::for_each
  • 标准::数组
  • 拉姆达函数

进入一个使用 C++11 的示例。

std::for_each(arr, arr + sizeof(arr) / sizeof(int), [&](int x) { std::cout<<x<<" ";});
Run Code Online (Sandbox Code Playgroud)

如何转换该代码以进行操作std::array

gsa*_*ras 5

您需要 数组的 array::beginarray::end作为 的前两个参数for_each(),这将标记数组的开始和结束。

那么第三个参数是一个函数,在你的例子中是一个 lambda 函数,如下所示:

std::for_each(myarray.begin(), myarray.end(), [](int x) { std::cout << x <<" "; });
Run Code Online (Sandbox Code Playgroud)

PS:对于更通用的方法,您可以使用std::begin()and std::end(),这样如果容器发生变化(例如从std::arraystd::vector),您可以保持此代码不变。