La norme garantit-elle que l'ordre des éléments égaux ne changera pas (hein, a oublié le terme pour cela) en utilisant STD :: Trier ou dois-je envisager une solution alternative pour atteindre cet objectif? P>
5 Réponses :
Non, si vous voulez la garantie, utilisez STD :: Stable_sort P>
Non, il ne garantit pas explicitement cela. Si vous devez conserver une commande relative, utilisez à la place Stable_Sort. P>
Documentation de tri qui inclut la référence à des éléments équivalents p>
Le terme pour ce que vous décrivez est Stabilité . P>
de SGI's STL Docs : P>
Remarque:
Trier code> n'est pas garanti d'être stable. p> blockQuote>
Utilisez
Stable_sort code>
si vous en avez besoin de . P>
de la référence C ++: ici P>
éléments qui compareraient les égaux aux autres ne sont pas garantis pour garder leur ordre relatif original. P> blockQuote>
vous voudrez peut-être stabilisant_sort , mais note que ce n'est pas aussi rapide (dans moyenne) p>
De droite, mieux ajoutez le mot-clé «moyen» pour éviter toute confusion.
Le commentaire qui le pointait a probablement été supprimé, laissant ainsi mon propre pendaison, que je ne peux pas vraiment enlever puisqu'il laisserait le tien ... oh bien :)
std :: trier code> n'est pas garanti d'être stable (le terme que vous essayiez de penser). Comme vous le devriez deviner,
std :: stable_sort code> est garanti pour être stable.
STD :: Stable_sort Code> fournit également une garantie sur la complexité pire des cas, que
std :: Trier code> ne le fait pas.
std :: Trier code> est généralement plus rapide en moyenne cependant. p>
Notez que STD :: Tri est plus rapide dans le cas moyen, cependant.
@ Jerry ajoutez cette réponse à ce wiki (selon le cas tel): Stackoverflow.com/questions/1596139/...
Je l'étends un peu, mais j'espère pas au point que cela devient horriblement ennuyeux ...
Compte tenu de l'existence de stables_sort, je devinerais "non"