Jika saya tidak salah, saya dapat melakukan std::transformperform di tempat dengan menggunakan rentang yang sama sebagai input dan output iterator. Anggaplah saya memiliki beberapa std::vectorobjek vec, maka saya akan menulis
std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op)
menggunakan operasi unary yang cocok unary_op.
Menggunakan standar C ++ 17, saya ingin menjalankan transformasi secara paralel dengan menempelkannya std::execution::pardi sana sebagai argumen pertama. Ini akan membuat fungsi beralih dari kelebihan (1) ke (2) di artikel cppreference aktifstd::transform . Namun komentar untuk kelebihan ini mengatakan:
unary_op[...] tidak boleh membatalkan iterator apa pun, termasuk iterator akhir, atau memodifikasi elemen apa pun dari rentang yang terlibat. (sejak C ++ 11)
Apakah "memodifikasi elemen apa pun" benar-benar berarti saya tidak dapat menggunakan algoritma di tempat atau apakah ini berbicara tentang detail yang berbeda yang saya salah artikan?