2010-11-05 30 views

Trả lời

16

std::sort không giữ nguyên thứ tự của các phần tử tương đương, std::stable_sort. Tuy nhiên, trong trường hợp int s bạn sẽ không nhận thấy sự khác biệt, trừ khi bạn sử dụng một số đặt hàng không tầm thường như trong ví dụ sau:

struct half_less 
{ 
    bool operator()(int a, int b) const { return (a/2) < (b/2); } 
}; 

std::sort(begin, end, half_less()); 
+0

Không phải (a/2) <(b/2) giống như Zebrafish

+0

@Zebrafish no, hãy xem xét ví dụ a = 2 và b = 3 – vitaut

+0

ah có. Cảm ơn. – Zebrafish

5

@vitaut là đúng. Tôi chỉ muốn thêm rằng bạn sẽ không nhận thấy nếu thứ tự của số nguyên bằng nhau được thay đổi. Điều này chỉ quan trọng nếu bạn sắp xếp các giá trị xảy ra để có một thuộc tính indentifying. Ví dụ nếu bạn lưu trữ con trỏ đến số nguyên và sắp xếp theo giá trị số nguyên.

+0

+1: đó là những gì tôi nghĩ khi đọc câu hỏi :) –

+0

Phải, hoặc nếu một số thứ tự không tầm thường được cung cấp bởi functor so sánh được sử dụng. – vitaut

+0

@vitaut: "Thứ tự không tầm thường" nào bạn có thể sử dụng cho ints có thể phát hiện sự không ổn định của sắp xếp? –

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