¿Cuál es el comportamiento de std :: sort cuando se usa con ints que son iguales, va a mantenerlos en el mismo orden o simplemente hacer algunas cosas impredecibles?std :: ordena el comportamiento con ints que son iguales
Respuesta
std::sort
no conserva el orden de los elementos equivalentes, std::stable_sort
hace. Sin embargo, en caso de int
s no notará la diferencia a menos que utilice algún orden no trivial como en el siguiente ejemplo:
struct half_less
{
bool operator()(int a, int b) const { return (a/2) < (b/2); }
};
std::sort(begin, end, half_less());
@vitaut es correcto. Solo quiero agregar que no notarías si se cambia el orden de los enteros iguales. Esto solo importa si ordena valores que tienen una propiedad de identificación. Por ejemplo, si almacena punteros en enteros y ordena por el valor entero.
+1: eso es lo que pensé al leer la pregunta :) –
Correcto, o si se usa algún tipo de ordenamiento no trivial proporcionado por el functor de comparación. – vitaut
@ vitaut: ¿Qué "ordenamiento no trivial" podría usar para las operaciones que detectarían la falta de estabilidad del tipo? –
- 1. .NET objetos que son iguales no dicen que son
- 2. std :: map ordena por datos?
- 3. Comparando dos números que son aproximadamente iguales
- 4. ¿Cómo comprobar estáticamente que dos razones son iguales?
- 5. ¿Son dos funciones iguales?
- 6. ¿Cuándo dos enumeraciones son iguales en C#?
- 7. Comportamiento extraño con vector :: erase y std :: remove_if con rango final diferente de vector.end()
- 8. std :: vector y std :: comportamiento min
- 9. ¿CDN y Cloud son iguales?
- 10. Comprueba si dos vectores son iguales
- 11. Son "{Binding Path =.}" Y "{Binding}" realmente iguales
- 12. El comportamiento de los iguales (método) en Java
- 13. ¿std :: sort cambia el orden relativo de elementos iguales?
- 14. ¿Por qué Java no ve que los enteros son iguales?
- 15. el comportamiento de std :: asíncrono con la política std :: :: lanzamiento asíncrono
- 16. TSQL - ALGUNOS | CUALQUIERA, ¿por qué son iguales con diferentes nombres?
- 17. ¿Las referencias y punteros son iguales con respecto al polimorfismo?
- 18. ¿El intervalo, el segmento, los árboles fenwick son iguales?
- 19. Nothing = String.Empty (¿Por qué son iguales?)
- 20. PHP: Probando si tres variables son iguales
- 21. Compruebe si 2 URL son iguales
- 22. LINQ: compruebe si dos listas son iguales
- 23. ¿Por qué arr y & arr son iguales?
- 24. ¿Cuándo se ordena una std :: priority_queue <>?
- 25. std C++ destrucción elemento contenedor y el comportamiento de inserción
- 26. ¿Por qué el operador! = De Python piensa que los argumentos son iguales y no iguales al mismo tiempo?
- 27. ¿Son estas dos configuraciones iguales en maven?
- 28. Cocoa: compruebe si dos NSArrays son iguales
- 29. ¿`std :: set` ordena los elementos en todos los casos?
- 30. varchar (20) y varchar (50) son iguales?
¿No es (a/2) <(b/2) lo mismo que a Zebrafish
@Zebrafish no, considere por ejemplo a = 2 yb = 3 – vitaut
ah sí. Gracias. – Zebrafish