2015-12-08 19 views
7

On this page có ghi chú này:std :: transform đảm bảo trật tự

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

Điều này có nghĩa rằng thứ tự kết quả của chuỗi không được bảo đảm tương quan với trật tự của chuỗi đầu vào, hoặc, có nghĩa là, trong khi thứ tự của kết quả cuối cùng của biến đổi được đảm bảo, các yếu tố riêng lẻ có thể đã được tạo ra theo thứ tự (mặc dù chúng vẫn sẽ xuất hiện theo thứ tự)?

+1

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

Trả lời

11

Thứ tự của chuỗi kết quả được cố định. Cụ thể tiêu chuẩn nói:

Effects: Gán qua mọi iterator i trong khoảng [result,result + (last1 - first1)) một giá trị tương ứng mới bằng op(*(first1 + (i - result)) hoặc binary_op(*(first1 + (i - result)), *(first2 + (i - result))).

Điều này đảm bảo rằng yếu tố đầu tiên của dải kết quả sẽ thu được bằng cách chuyển đổi (các) phần tử đầu tiên của phạm vi nhập liệu, v.v. Tuy nhiên, thứ tự mà các cuộc gọi đến op được thực hiện không được chỉ định.

Các vấn đề liên quan