Gewährleistet der Standard, dass sich die Reihenfolge gleicher Elemente nicht ändert (wie, vergessen Sie den Begriff dafür), indem Sie std :: sort verwenden oder muss ich eine alternative Lösung in Betracht ziehen, um dieses Ziel zu erreichen?Ändert std :: sort die relative Reihenfolge gleicher Elemente?
Antwort
std::sort
nicht als stabil gewährleistet ist (der Begriff, den Sie zu denken versuchten). Wie Sie vermuten, ist std::stable_sort
garantiert stabil. std::stable_sort
bietet auch eine Garantie für Worst-Case-Komplexität, die std::sort
nicht tut. std::sort
ist jedoch im Durchschnitt normalerweise schneller.
Nein, wenn Sie die Garantie Verwendung std :: wollen stable_sort
Nein, es explizit dies nicht garantieren. Wenn Sie die relative Reihenfolge beibehalten müssen, verwenden Sie stattdessen stable_sort.
Dokumentation der Art, die sich auf entsprechende Elemente
Der Begriff für das, was ist stability Sie beschreiben, enthält.
Von SGI STL docs:
Hinweis:
sort
ist nicht stabil sein garantiert.
Verwenden Sie stable_sort
, wenn Sie dies benötigen.
Von C++ Referenz: here
Elemente, die zueinander gleich vergleichen würden nicht ihre ursprüngliche relative Ordnung zu halten garantiert.
Sie könnten stable_sort, wollen aber beachten Sie, dass es (im Durchschnitt) nicht so schnell ist
Richtig, besser fügen Sie die "durchschnittliche" Keyword, um Verwirrung zu vermeiden. –
Sieht gut aus für mich. –
Der Kommentar, der darauf hingewiesen hat, wurde wahrscheinlich entfernt, so dass meine eigene ausstehende, dass ich nicht wirklich entfernen kann, da es Ihre lassen würde ... na ja :) –
- 1. Warum ändert die relative Positionierung die Reihenfolge meiner Seite?
- 2. Sortier std :: Listen std :: sort
- 3. std :: sort erkennt typ'
- 4. Wie ändert man die Reihenfolge der untergeordneten Elemente in JavaFX
- 5. Sortieren von sets mit std :: sort
- 6. Quick-sort in aufsteigender Reihenfolge
- 7. Ändert std :: vector.pop_back() die Vektorkapazität?
- 8. Verwirrung über std :: weniger und std :: mehr mit std :: sort
- 9. Sort Elemente, aber halten bestimmte diejenigen feste
- 10. Verwendung std :: sort oben N Elemente in einem std finden :: vector
- 11. Ist std :: list <> :: sort stable?
- 12. Wie wird sort für std :: deque implementiert?
- 13. Wie benutzerdefinierte std :: sort Funktion verwenden?
- 14. C++ benutzerdefinierte Vergleichsfunktion für std :: sort()
- 15. eine Ausnahme in Std fangen: sort
- 16. bash sort ungewöhnliche Reihenfolge. Problem mit Leerzeichen?
- 17. Merge Sort auf Objektverknüpfte Liste (aufsteigende Reihenfolge)
- 18. std :: sort() nicht für die globalen Betreiber sieht <() definierte
- 19. Wie implementiert std :: sort die Auslagerungsoperation nur mit Iteratoren?
- 20. Implementieren benutzerdefinierter Iterator für die Arbeit mit Std :: Sort
- 21. Ertragsrückgabe ändert die Reihenfolge der verketteten Aufrufmethoden
- 22. Wie ändert man die Reihenfolge von OrderedDict?
- 23. style.display ändert sich nach Array Sort
- 24. Wie ändert man die relative Rahmenfarbe des Layouts?
- 25. C++ Std :: Map Frage über Iterator Reihenfolge
- 26. Verkettung von Ordnungsvergleichselementen (z. B. für std :: sort)
- 27. Reihenfolge der Elemente im Zeigersatz
- 28. Die Reihenfolge der Elemente in Wörterbuch
- 29. Ist die Reihenfolge der xmlns Elemente wichtig
- 30. Behält Collections.sort die Reihenfolge für gleiche Elemente bei?
Angesichts der Existenz von stable_sort würde ich raten "Nein" –