如果我没有记错的话,我可以std::transform
执行到位 ,通过使用同一范围内的输入和输出迭代器。假设我有一些std::vector
对象vec
,那么我会写
std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op)
使用合适的一元运算unary_op
。
使用C ++ 17标准,我想通过std::execution::par
在其中插入第一个参数来并行执行转换。这会使该函数从上cppreference文章std::transform
中的重载(1)变为(2)。但是,对此超载的注释说:
unary_op
[...]不得使任何迭代器(包括最终迭代器)无效,或修改所涉及范围的任何元素。(自C ++ 11起)
“修改任何元素”真的意味着我无法就地使用算法,还是在谈论我误解的其他细节?