Quel est le comportement de std :: sort lorsqu'il est utilisé avec ints qui sont égaux va-t-il les garder dans le même ordre ou juste faire des choses imprévisibles?std :: comportement de tri avec ints qui sont égaux
Répondre
std::sort
ne conserve pas l'ordre des éléments équivalents, std::stable_sort
fait. Toutefois, en cas de int
s vous ne remarquerez pas la différence sauf si vous utilisez une commande non négligeable comme dans l'exemple suivant:
struct half_less
{
bool operator()(int a, int b) const { return (a/2) < (b/2); }
};
std::sort(begin, end, half_less());
@vitaut est juste. Je veux juste ajouter que vous ne remarquerez pas si l'ordre des entiers égaux est changé. Cela n'a d'importance que si vous triez des valeurs qui ont une propriété d'identification. Par exemple si vous stockez des pointeurs sur des entiers et effectuez un tri par la valeur entière.
+1: c'est ce que je pensais en lisant la question :) –
A droite, ou si une commande non-triviale fournie par le foncteur de comparaison est utilisée. – vitaut
@vitaut: Quelle "commande non-triviale" pourriez-vous utiliser pour les ints qui détecteraient la non-stabilité du tri? –
- 1. comportement de tri incohérent
- 2. sélectionnez où column1 sont égaux
- 3. Tri std :: list en utilisant std :: set
- 4. comportement étrange de std :: vecteur
- 5. std :: stringstream comportement étrange
- 6. std :: tri sans foncteurs
- 7. Tri std :: liste de pointeurs
- 8. Tri par clé et la valeur dans les clés de cas sont égaux
- 9. VB.NET Comportement de tri étrange?
- 10. comportement bizarre avec std :: getline et std :: vecteur <std::string>
- 11. Ajouter des ints to listview pour le tri
- 12. std :: stringstream Comportement anormal de GCC
- 13. Déterminer si deux arbres binaires sont égaux
- 14. fonction Drupal db_query() stocke la valeur de débordement pour INTs qui ne sont pas trop grand
- 15. HashSet avec deux objets égaux?
- 16. CakePHP, bon ordre/comportement de tri?
- 17. Comportement de tri pour Doctrine ORM
- 18. Question de référence: quand deux objets sont-ils égaux?
- 19. Les ints sont-ils toujours initialisés à 0?
- 20. Reporter l'email lorsque les domaines sont égaux à
- 21. nuage de points avec des axes égaux
- 22. déterminer si tous les octets sont égaux dans un flux
- 23. Comparez deux sites Web et voyez s'ils sont "égaux?"
- 24. Dans Tcl, les espaces sont-ils égaux à Chaîne vide?
- 25. problème avec std :: avance sur std :: ensembles
- 26. std :: trier sur std :: vector <std::string>
- 27. conversion de chaînes à ints
- 28. Comportement de regroupement/tri de groupes de données Silverlight
- 29. Fonctor C++ - comportement inattendu?
- 30. Comment puis-je comparer 2 ints en sql?
Est-ce que (a/2) <(b/2) n'est pas identique à Zebrafish
@ poisson-zèbre non, considérons par exemple a = 2 et b = 3 – vitaut
ah oui. Merci. – Zebrafish