поведение std :: sort с равными целыми числами - PullRequest
9 голосов
/ 05 ноября 2010

Каково поведение std :: sort при использовании с равными целочисленными значениями, собирается ли он сохранять их в том же порядке или просто делать непредсказуемые вещи?

Ответы [ 2 ]

16 голосов
/ 05 ноября 2010

std::sort не сохраняет порядок эквивалентных элементов, std::stable_sort делает.Однако в случае int s вы не заметите разницу, если не будете использовать нетривиальное упорядочение, как в следующем примере:

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

std::sort(begin, end, half_less());
6 голосов
/ 05 ноября 2010

@ Витаут прав.Я просто хочу добавить, что вы не заметите, если изменится порядок равных целых чисел.Это имеет значение, только если вы сортируете значения, которые имеют свойство идентификации.Например, если вы храните указатели на целые числа и сортируете по целому значению.

...