Dlaczego std :: transform nie gwarantuje zamówienia (ale dla każdego może zagwarantować zamówienie)? Czy to nie umożliwia implementacji sztuczki dla wydajności?
Po prostu zdaję sobie sprawę, że standard nie gwarantuje kolejności stosowania wywołania zwrotnego funkcjistd::transform
. I nie pozwala na wywołanie zwrotne funkcji lub funktora. Ale w tym samym czasiestd::for_each
faktycznie gwarantuję zamówienie.
Można zgadnąć, że transformacja może wykorzystywać algorytm wysokiej wydajności, który nie gwarantuje porządku, ale O (N) jest już najlepszym algorytmem.
Dlaczego więc standard nie zapewniatransform
zachowuj się jakfor_each
z widoku zastosowania kolejności funkcji zwrotnych? Użytkownik skorzysta z tej gwarancji.