Lorsque je tente d'appeler la fonction de hachage créer des lignes de code ci-dessous je reçois l'erreur aucune fonction correspondante pour les appelsAucune fonction correspondante sur Hashtable
myHash.create("5", "Data");
checkTest("testSimpleIntHash #1", "Data", myHash.retrieve("5"));
L'idée est que créer reçoit la clé de la KeyValuePair class, puis la méthode aurait haché la clé, aller à ce seau, puis insérer la paire de valeur de clé. Je crois que je reçois cette erreur parce que je ne produis pas de chaîne. Cependant, je ne peux pas comprendre la syntaxe pour sortir correctement la paire de valeurs de clé en chaîne avec la méthode create. (Je me sers std::list
, et ma KeyValuePair
classe fonctionne correctement)
template<typename T> class HashTable
{
public:
static const unsigned int NUM_BUCKETS = 100000;
HashTable create(const string& key, const T& item)
{
int temp = hash(key);
arr[NUM_BUCKETS].push_back(KeyValuePair<T>(temp, item));
}
private:
int hash(const string& key) const;
//Make an array of linked lists of KeyValuePair objects.
list<KeyValuePair<T>> arr[NUM_BUCKETS];
};
template <typename T>
int HashTable<T>::hash(const string& key) const {
int temp = 0;
for (int i = key.length(); i >= 0; i--) {
temp = (13 * temp + key[i]) % NUM_BUCKETS;
}
return temp;
}
Dans 'create' vous ne retournez pas une valeur, et la déclaration de classe est incoplete (de nom de classe) – Rama
Quelle est la définition de myHash? – JohnB
Quelle est la définition de 'checkTest'? – Rama