2015-12-08 12 views
7

があります:のstd ::変換順序保証<a href="http://en.cppreference.com/w/cpp/algorithm/transform" rel="noreferrer">this page</a>で

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

が、これはシーケンスの結果の順序が入力シーケンスの順序に相関することが保証されていないことを意味し、あるいはん、トランスフォームの最終結果の順序は保証されていますが、個々の要素が順不同で作成されている可能性があります(順序は変わりませんが)。

+1

関連:http://stackoverflow.com/questions/17356719/why-stdtransform-doesnt-guarantee-the-order-but-for-each-guarantee-the-order – clcto

答えて

11

結果の順序は固定されています。具体的には、標準的な言葉:

効果:範囲[result,result + (last1 - first1))op(*(first1 + (i - result))又はbinary_op(*(first1 + (i - result)), *(first2 + (i - result)))に等しい新たな対応する値ですべての反復子iスルー割り当てます。

これは、結果範囲の最初の要素が、入力範囲の最初の要素などを変換することによって得られることを保証します。ただし、opへの呼び出しの順序は指定されていません。

関連する問題