¿El estándar garantiza que el orden de elementos iguales no cambiará (eh, olvidó el término para eso) usando std :: sort o necesito considerar una solución alternativa para lograr este objetivo?¿std :: sort cambia el orden relativo de elementos iguales?
Respuesta
std::sort
no se garantiza que sea estable (el término que estaba tratando de pensar). Como es de suponer, std::stable_sort
está garantizado para ser estable. std::stable_sort
también proporciona una garantía en el peor de los casos complejidad, que std::sort
no lo hace. std::sort
suele ser más rápido en promedio.
No, si desea que el uso std :: garantía stable_sort
Sin explícitamente no garantiza esto. Si necesita mantener el orden relativo, use stable_sort en su lugar.
Documentación del tipo que incluye referencia a elementos equivalentes
El término para lo que usted está describiendo es stability.
De SGI de STL docs:
Nota:
sort
no se garantiza que sea estable.
Use stable_sort
si necesita esto.
De referencia C++: here
elementos que comparar iguales entre sí no están garantizados para mantener su orden relativo originales.
Es posible que desee stable_sort, pero tenga en cuenta que no es tan rápido (en promedio)
Correcto, mejor agregue la palabra clave 'promedio' para evitar confusiones. –
me queda bien. –
El comentario que lo señaló probablemente se haya eliminado, dejando así mi propia pendiente, que realmente no puedo eliminar, porque dejaría la suya ... bueno :) –
- 1. std :: ordena el comportamiento con ints que son iguales
- 2. ¿std :: sort implementa Quicksort?
- 3. clasificación std :: listas usando std :: sort
- 4. boost zip_iterator y std :: sort
- 5. Rendimiento de qsort vs std :: sort?
- 6. Orden de destrucción de elementos de un std :: vector
- 7. Rendimiento relativo de std :: vector vs. std :: list vs. std :: slist?
- 8. ¿Está std :: list <> :: sort stable?
- 9. Obteniendo los elementos `std :: priority_queue` en orden inverso?
- 10. Cambia el orden de XML usando XDocument
- 11. Diseño relativo. Entre 2 elementos
- 12. Encadenamiento de predicados de ordenamiento (por ejemplo, para std :: sort)
- 13. Cambiar el orden de los elementos HTML cuando el diseño cambia en Responsive Web Design
- 14. ¿Cuál es la diferencia práctica entre std :: nth_element y std :: sort?
- 15. ¿Cuál es el orden de los elementos de limpieza de std :: list?
- 16. ¿Por qué Selection Sort no es estable?
- 17. comparar arrays para la igualdad, el orden de los elementos
- 18. ¿Cuán grande es la brecha de rendimiento entre std :: sort y std :: stable_sort en la práctica?
- 19. Sort lexicographically?
- 20. Cambiar el orden de los elementos
- 21. CSS, tamaño de fuente relativo
- 22. std :: elementos de vector inicializando
- 23. Establecer el orden de los elementos de los cambios?
- 24. Buscar elementos "no iguales" en dos matrices
- 25. ¿Existe una manera fácil de comparar si 2 XDocuments son iguales ignorando el orden de los elementos/atributos?
- 26. Cambia el orden de una escala x discreta
- 27. ¿std :: vector.pop_back() cambia la capacidad del vector?
- 28. Orden de destrucción de elementos de contenedor STL
- 29. ¿Cómo funciona Javascript's sort()?
- 30. ¿Está garantizado el orden de clave de NSDictionary igual que el inicializado si nunca cambia?
Dada la existencia de stable_sort, supongo que "no" –