Pergunta

Eu descobri recentemente que a implementação do mapa hash em C ++ será chamado unordered_map.

Quando olhei para cima porque eles não estavam apenas usando hash_map, descobri que aparentemente há problemas de compatibilidade com a implementação de hash_map que resolve unordered_map (mais sobre isso aqui ).

Essa página wiki não dá muito mais informações para que eu me perguntando se alguém conhecia alguns dos problemas com hash_map que resolve unordered_map.

Foi útil?

Solução

Uma vez que não havia nenhuma tabela hash definido no C ++ biblioteca padrão, diferentes implementadores das bibliotecas padrão proporcionaria um não-padrão tabela hash muitas vezes chamado hash_map. Porque estas implementações não foram escritos seguindo um padrão que todos eles tinham diferenças sutis em garantias de funcionalidade e desempenho.

C ++ 11 uma implementação de tabela de hash foi adicionado ao o C ++ padrão biblioteca padrão. Decidiu-se usar um nome alternativo para a classe para evitar colisões com essas implementações não-padrão e para evitar o uso inadvertido da nova classe por desenvolvedores que tiveram hash_table em seu código.

O nome alternativo escolhido é unordered_map o que realmente é mais descritivo, uma vez que sugere a interface do mapa da classe e da natureza desordenada de seus elementos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top