2015-12-08 15 views
7

Na this page jest to uwaga:std :: przekształcić gwarancje zamów

std::transform does not guarantee in-order application of unary_op or binary_op.

Czy to oznacza, że ​​otrzymany kolejność sekwencji nie jest gwarantowana koreluje z kolejnością sekwencji wejściowej, lub Czy oznacza to, że chociaż zagwarantowana jest kolejność ostatecznego wyniku transformacji, poszczególne elementy mogły zostać utworzone nie w porządku (choć nadal będą wyświetlane w kolejności)?

+1

Powiązane: http://stackoverflow.com/questions/17356719/why-stdtransform-doesnt-guarantee-the-order- but-for-each-guarantee-e-order- – clcto

Odpowiedz

11

Kolejność wynikowej sekwencji jest stała. Konkretnie średnia mówi:

Efekty: Przypisuje przez każdy iterator i w zakresie [result,result + (last1 - first1)) nowa odpowiednia wartość równa op(*(first1 + (i - result)) lub binary_op(*(first1 + (i - result)), *(first2 + (i - result))).

To gwarantuje, że pierwszy element zakresu wyników zostanie uzyskany przez transformację pierwszego elementu (elementów) zakresu wejściowego (wejściowych) i tak dalej. Jednak kolejność wywołań op nie została określona.