Wie ich richtig verstanden habe, berechnet das Implementieren der Hashtabelle den Index basierend auf der eingegebenen Zeichenfolge und gibt ihn direkt zurück, was es zu einem einfachen Schlüsselwertspeicher macht.Einfache Hashtabelle mit Vektor
So einfach Hash-Funktion so etwas wie
int hash(string name){
int index = 0;
int hash = 0;
for (int i = 0; i < name.length() ;i++){
hash += (int)name[i];
}
index = sizeOfArray % hash;
}
SizeOfArray ist Array von Zeigern mit vordefinierten Größe aussehen könnte. Wenn dieser Index nicht existiert, wird er erstellt. Aber wie implementiere ich es mit Vektoren?
Vektor hat keine vordefinierte Größe. An sie wachsen automatisch. Wenn also sizeOfArray% hash aufgerufen wird, ändert sich jeder Vektor.
Was ist Logik dahinter hat Tabellen? Was ist die beste Methode, um den Index selbst mit wachsendem Vektor/Array zu berechnen?
Warum nicht einfach ein Array von String * verwenden? Und da es Kollisionen geben kann, ist es besser, ein Array von verknüpften Listen (oder Vektoren) von string zu verwenden, da mehrere Strings an einen Hash-Schlüssel anfügbar sein müssen. Übrigens, vielleicht machst du das nur um daraus zu lernen, was sehr nützlich ist. Hash-Schlüssel sind jedoch die Grundlage vieler STL-Datenstrukturen, die mit Ihrem Compiler geliefert werden. –
Es ist eine gute Idee, über Hashtabellen zu lernen, aber implementieren Sie Ihre eigenen nicht für andere als Lernzwecke, nicht wenn es ['std :: unordered_map'] gibt (http://en.cppreference.com/w/cpp/ container/ungeordnete_map). –
Ich erstelle Thins, um zu lernen, ich möchte eine Struktur im Index speichern, die mehrere Daten enthält. – Darlyn