Pregunta

Recientemente descubrí que la implementación del mapa hash en C ++ se llamará unordered_map .

Cuando busqué por qué no solo estaban usando hash_map , descubrí que aparentemente hay problemas de compatibilidad con la implementación de hash_map que unordered_map resuelve (más sobre esto aquí ).

Esa página wiki no da mucha más información, así que me pregunto si alguien conocía algunos de los problemas con hash_map que unordered_map resuelve.

¿Fue útil?

Solución

Dado que no había una tabla hash definida en la biblioteca estándar de C ++, los diferentes implementadores de las bibliotecas estándar proporcionarían una tabla hash no estándar a menudo llamada hash_map . Debido a que estas implementaciones no se escribieron siguiendo un estándar, todas tenían diferencias sutiles en la funcionalidad y las garantías de rendimiento.

Comenzando con C ++ 11 se ha agregado una implementación de tabla hash a El estándar de la biblioteca estándar de C ++. Se decidió utilizar un nombre alternativo para la clase para evitar colisiones con estas implementaciones no estándar y para evitar el uso involuntario de la nueva clase por parte de desarrolladores que tenían hash_table en su código.

El nombre alternativo elegido es unordered_map que realmente es más descriptivo ya que sugiere la interfaz de mapa de la clase y la naturaleza desordenada de sus elementos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top