Domanda

Di recente ho scoperto che l'implementazione della mappa hash in C ++ si chiamerà unordered_map .

Quando ho cercato perché non stessero semplicemente usando hash_map , ho scoperto che apparentemente ci sono problemi di compatibilità con l'implementazione di hash_map che unordered_map si risolve (ulteriori informazioni qui ).

Quella pagina wiki non fornisce molte più informazioni, quindi mi chiedo se qualcuno conoscesse alcuni dei problemi con hash_map che unordered_map risolve.

È stato utile?

Soluzione

Poiché nella libreria standard C ++ non è stata definita una tabella hash, diversi implementatori delle librerie standard fornirebbero una tabella hash non standard spesso denominata hash_map . Poiché queste implementazioni non sono state scritte seguendo uno standard, presentavano tutte sottili differenze di funzionalità e garanzie di prestazione.

A partire da C ++ 11 è stata aggiunta un'implementazione della tabella hash lo standard di libreria standard C ++. È stato deciso di utilizzare un nome alternativo per la classe per prevenire collisioni con queste implementazioni non standard e per impedire l'uso involontario della nuova classe da parte degli sviluppatori che avevano hash_table nel loro codice.

Il nome alternativo scelto è unordered_map che in realtà è più descrittivo in quanto suggerisce l'interfaccia della mappa della classe e la natura non ordinata dei suoi elementi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top