在这个页面上有这个说明:
std::transform does not guarantee in-order application of unary_op or binary_op.
这是否意味着序列的结果顺序不能保证与输入序列的顺序相关,或者是否意味着,虽然保证了变换的最终结果的顺序,但是可以创建单个元素乱序(虽然它们仍会按顺序出现)?
结果序列的顺序是固定的.特别是标准说:
效果:通过
i
范围中[result,result + (last1 - first1))
的每个迭代器分配一个等于op(*(first1 + (i - result))
或的新对应值binary_op(*(first1 + (i - result)), *(first2 + (i - result)))
.
这保证了结果范围的第一个元素将通过变换输入范围的第一个元素来获得,依此类推.但是,op
未指定进行调用的顺序.