c++ - 更新 C++ vector 中的所有元素

标签 c++ c++11 vector stl lambda

我有一个结构 vector - 假设结构类似于:

struct foo {
  int bar1;
  int bar2;
}

现在我想更新 vector 的每个元素,更新是将 bar1 乘以 2。

执行此操作的简单方法是遍历 vector 的每个元素,但是否有更好的方法来执行此操作,也许是使用带有 c++11 lambda 函数的库函数?

最佳答案

您可以使用 std::for_each为此:

#include <algorithm>
#include <vector>
...
std::vector<foo> v;
....
std::for_each(v.begin(), v.end(), [](foo& f) { f.bar1 *=2; });

它是否比普通循环更清晰/更简单是另一回事。在这种简单的情况下,基于普通范围的循环可能是更好的选择:

for (auto& f : v) f.bar1 *= 2;

关于c++ - 更新 C++ vector 中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17335825/

相关文章:

c++ - 确定模板参数是否为指针

c++ - 杆切割 - 递归

c++ - 如何在eclipse上调试图像处理项目?

c++ - 我可以将 CRTP 与多个派生类一起使用,并以多态方式使用它们吗?

c++ - 如何在只有 protected 或私有(private)构造函数的类上调用::std::make_shared?

c++ - 接口(interface)和公共(public)方法

c++ - 为什么我不能在 std::vector 中使用抽象类?

c++ - 具有循环依赖性的 CRTP

C++:无法将 vector 传递给构造函数

c++ - 如何在 vector 队列或 vector vector 上使用 std::async 进行排序?