Se non sbaglio, posso far std::transformfunzionare sul posto usando lo stesso intervallo di un iteratore di input e output. Supponiamo di avere un std::vectoroggetto vec, quindi scrivo
std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op)
usando un'operazione unaria adatta unary_op.
Usando lo standard C ++ 17, vorrei eseguire la trasformazione in parallelo inserendone una std::execution::parcome primo argomento. Ciò farebbe passare la funzione da overload (1) a (2) nell'articolo di cppreference sustd::transform . Tuttavia, i commenti a questo sovraccarico dicono:
unary_op[...] non deve invalidare alcun iteratore, inclusi gli iteratori finali, né modificare alcun elemento degli intervalli coinvolti. (dal C ++ 11)
"Modificare gli elementi" significa davvero che non posso usare l'algoritmo in atto o si tratta di un dettaglio diverso che ho frainteso?