std :: transform命令保证

时间:2015-12-08 22:54:13

标签: c++ c++11

this page上有这样的说明:

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

这是否意味着序列的结果顺序不能保证与输入序列的顺序相关,或者是否意味着,虽然保证了变换的最终结果的顺序,但各个元素可以是不是按顺序创建的(尽管它们仍会按顺序出现)?

1 个答案:

答案 0 :(得分:14)

结果序列的顺序是固定的。具体而言,标准说:

  

效果:通过i范围内的每个迭代器[result,result + (last1 - first1))分配一个等于op(*(first1 + (i - result))binary_op(*(first1 + (i - result)), *(first2 + (i - result)))的新对应值。

这保证了结果范围的第一个元素将通过变换输入范围的第一个元素来获得,依此类推。但是,未指定调用op的顺序。