Devo creare una funzione di ricerca in cui una coppia (X, Y) corrisponde a un valore Z specifico. Uno dei requisiti principali è che ho bisogno di farlo nel modo più vicino possibile alla complessità di O (1). Il mio piano è di usare una mappa non ordinata.C++ - complessità unordered_map
Generalmente non uso una tabella hash per la ricerca, poiché il tempo di ricerca non è mai stato importante per me. Ho ragione nel ritenere che finché ho costruito la mappa non ordinata senza collisioni, il mio tempo di ricerca sarà O (1)?
La mia preoccupazione è quindi ciò che diventa la complessità se la chiave non è presente nella mappa non ordinata. Se per esempio utilizzo unordered_map :: find() :, per determinare se una chiave è presente nella mia tabella hash, come farò a darmi una risposta? In realtà esegue iterazioni su tutte le chiavi?
Apprezzo molto l'aiuto.
ora sono confuso dalla risposta di jakar qui:. http://stackoverflow.com/questions/4395050/finding-value-in-unordered-map vorrei interpretare questo commento al significa che può essere realizzato Allora, non è così? – user1764386
@ user1764386: Beh, find deve restituire * qualcosa * se non può restituire un iteratore al valore, quindi unordered_map :: end è stata la scelta migliore. – AndyG
grazie per l'aiuto. Intendevo dire che sono leggermente confuso dalla sua risposta, perché l'ho interpretato nel senso che la complessità sarà migliore di O (N) se la chiave non è nella mappa non ordinata. – user1764386