Se não me engano, eu posso fazer std::transform
executar no lugar usando a mesma faixa como um iterador de entrada e saída. Suponha que eu tenha algum std::vector
objeto vec
, então eu escreveria
std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op)
usando uma operação unária adequada unary_op
.
Usando o padrão C ++ 17, eu gostaria de executar a transformação em paralelo, colocando um std::execution::par
lá como o primeiro argumento. Isso faria a função passar da sobrecarga (1) para (2) no artigo cppreference emstd::transform
. No entanto, os comentários a essa sobrecarga dizem:
unary_op
[...] não deve invalidar nenhum iterador, incluindo o iterador final, nem modificar nenhum elemento dos intervalos envolvidos. (desde C ++ 11)
"Modificar quaisquer elementos" realmente significa que não posso usar o algoritmo no lugar ou isso está falando de um detalhe diferente que eu interpretei errado?