Меняет ли std :: sort относительный порядок одинаковых элементов? - PullRequest
8 голосов
/ 27 октября 2009

Гарантирует ли стандарт, что порядок равных элементов не изменится (ну, забыл термин для этого) с помощью std :: sort или мне нужно рассмотреть альтернативное решение для достижения этой цели?

Ответы [ 5 ]

20 голосов
/ 27 октября 2009

std::sort не гарантированно будет стабильным (термин, который вы пытались придумать). Как вы могли догадаться, std::stable_sort гарантированно будет стабильным. std::stable_sort также дает гарантию на сложность в худшем случае, а std::sort - нет. std::sort обычно в среднем быстрее.

3 голосов
/ 27 октября 2009

С C ++ ссылка: здесь

Элементы, которые сравниваются равными друг другу, не гарантируют сохранения своего первоначального относительного порядка.

Возможно, вы захотите stable_sort , но учтите, что это не так быстро (в среднем)

2 голосов
/ 27 октября 2009

Нет, это явно не гарантирует этого. Если вам нужно поддерживать относительный порядок, используйте вместо него stable_sort.

Документация вида, которая включает ссылку на эквивалентные элементы

2 голосов
/ 27 октября 2009

Термин для того, что вы описываете: стабильность .

Из документов SGI STL :

Примечание: sort не гарантированно будет стабильным.

Используйте stable_sort, если вам это нужно.

2 голосов
/ 27 октября 2009

Нет, если вы хотите получить гарантию, используйте std :: stable_sort

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...