std::transform的顺序保证

16

此页面上有这样一条注释:

std::transform 不保证对于 unary_op 或 binary_op 的应用顺序。

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


1
相关链接:https://dev59.com/wnPYa4cB1Zd3GeqPn9it - clcto
1个回答

21

结果序列的顺序是固定的。具体地,标准规定:

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

这保证了结果范围的第一个元素是通过转换输入范围的第一个元素(或多个元素)获得的,以此类推。但是,调用 op 的顺序没有指定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接