Yanılmıyorsam, bir giriş ve çıkış yineleyicisi ile aynı aralığı kullanarak yerindestd::transform
performans gösterebilirim . Bazı nesnelerim olduğunu varsayalım , o zaman yazardımstd::vector
vec
std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op)
uygun bir tekli işlem kullanarak unary_op
.
C ++ 17 standardını kullanarak, std::execution::par
ilk argüman olarak oraya yapıştırarak dönüşümü paralel olarak yürütmek istiyorum . Bu, fonksiyonun cppreference makalesindestd::transform
aşırı yük (1) 'den (2)' ye gitmesini sağlayacaktır . Ancak bu aşırı yüklenmenin yorumları şöyle diyor:
unary_op
[...] uç yineleyiciler de dahil olmak üzere yineleyicileri geçersiz kılmamalı veya ilgili aralıkların öğelerini değiştirmemelidir. (C ++ 11'den beri)
"Herhangi bir öğeyi değiştir" gerçekten algoritmayı yerinde kullanamayacağım anlamına mı geliyor yoksa yanlış yorumladığım farklı bir ayrıntıdan mı bahsediyor?