小编geo*_*geo的帖子

我可以在并行执行策略中使用std :: transform吗?

如果我没有记错的话,我可以std::transform执行到位 ,通过使用同一范围内的输入和输出迭代器。假设我有一些std::vector对象vec,那么我会写

std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op)
Run Code Online (Sandbox Code Playgroud)

使用合适的一元运算unary_op

使用C ++ 17标准,我想通过std::execution::par在其中插入第一个参数来并行执行转换。这会使该函数从上cppreference文章std::transform中的重载(1)变为(2)。但是,对此超载的注释说:

unary_op[...]不得使任何迭代器(包括最终迭代器)无效,或修改所涉及范围的任何元素。(自C ++ 11起)

“修改任何元素”是否真的意味着我无法就地使用算法,还是在谈论我误解的其他细节?

c++ parallel-processing stl c++17

9
推荐指数
2
解决办法
142
查看次数

标签 统计

c++ ×1

c++17 ×1

parallel-processing ×1

stl ×1