首页 > 解决方案 > 有效地对 std::vector 中的所有项目执行下限功能

问题描述

我想将所有项目放在 std::vector 中并使用以下代码:

for(const float &number : numbers)
     number = floor(number);

但我需要为此操作使用并行算法。标准 C++ 中是否有任何并行算法可以有效地对所有项目执行类似 floor 函数的操作?

标签: c++performancestdfloorceil

解决方案


如果你可以使用 C++17,你可以使用ExecutionPolicy参数 fromstd::for_each来并行化你的循环

#include <algorithm>
#include <cmath>
#include <execution>

std::for_each(std::execution::par_unseq,
              numbers.begin(),
              numbers.end(),
              [](double& number){ number = std::floor(number); });

推荐阅读