【问题标题】:c++ for_each process two containers parallelc++ for_each 并行处理两个容器
【发布时间】:2014-04-08 09:33:09
【问题描述】:

我想处理 2 个以某种方式相关的容器,并且我想以元素方式彼此处理它们。

简单的例子: 一个容器包含某种总和,另一个等长容器包含必须从该总和中减去的数字。

std::vector<int> s = {20,56,7,34,234,23,54};
std::vector<int> m = {1,3,5,2,3,5,6};

for(int i=0; i<s.size();++i){
  s[i] -= m[i];
}

有没有更优雅的方式来实现这一点,例如使用 for_each?

【问题讨论】:

  • 您可以为“其他”向量设置iterator。但是我真的不明白这一点,您发布的代码很好(当然,范围检查除外)。
  • 你的解决方案已经很优雅了。

标签: c++ c++11 foreach lambda


【解决方案1】:

如果你真的想为此使用标准算法,你可以使用转换:

std::transform(begin(s),end(s),begin(m),begin(s),yourfunc);

yourfunc 从 s 和 m 中获取元素并将所需的修改返回到 s(或您选择的任何其他容器)中。

auto yourfunc = [](int ms, int mm){return ms-mm;};

【讨论】:

  • 谢谢我不知道变换。但是你们都可能是对的,这可能根本不会增加可读性。顺便说一句:std::minus 可以用作 yourfunc。
猜你喜欢
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 2016-07-02
相关资源
最近更新 更多