Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] Template di hash table

    Premetto che so che esiste la classe unorder_map ma io voglio implementare una mia hash table.

    Ad ogni modo ho subito trovato un problema: non so come poter implementare una funzione hash valida per tutti i tipi. Avevo pensato di considerare gli indirizzi delle chiavi, ma cambiando variabile anche con stesso valore non mi restituirebbe la corretta chiave.

    Qualcuno ha qualche spunto da darmi?

  2. #2
    Io seguirei le orme di std::unordered_map: essa accetta tra i parametri template il tipo di un functore usato per calcolare gli hash; di default, viene usato std::hash<T>, che fornisce una funzione di hash di default per tutti i tipi primitivi e diversi tipi derivati della libreria standard (vedi qui). Quanto ai tipi definiti dall'utente, è possibile specificare esplicitamente il tipo del functore da usare per calcolarne l'hash, ma in genere se il programmatore vuole che il suo tipo sia usato in una hashtable dovrebbe creare una specializzazione di std::hash<T> per il suo tipo, in modo che poi si possa usare std::hash<T> senza fare null'altro di particolare.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Ok, proverò.
    Grazie mille.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.