Pour mettre en œuvre une table de hachage ouverte en C++, j'ai pensé définir un vecteur qui contient des pointeurs vers des vecteurs contenant des données. Pour simplifier, disons que je veux une table de hachage qui peut stocker int
s. J'ai supposé que j'avais besoin d'un vector< vector<int>* >
pour ça.
La structure de données résultante pourrait ressembler à ceci :
[index 0] 8, 6, 2
[index 1] (vide)
[indice 2] 9, 12, 15, 28, 1
J'aurais pu créer un tableau statique de vector<int>
des pointeurs, mais je voulais pouvoir ajouter des indices au fur et à mesure.
Pour écrire les éléments, je voulais faire quelque chose comme ça :
for (unsigned int i = 0; i < myHashtable.size(); i++) {
cout << "[index " << i << "]";
for (unsigned int j = 0; j < myHashtable[i]->size(); j++) {
cout << " " << *(myHashtable[i])[j];
}
cout << "\n";
}
Ce code ne se compile pas. Quelle est la manière correcte d'adresser *(myHashtable[i])[j]
?