Große Hash-Tabelle in Cpp oder einer anderen schnellen Sprache umkehren

Ich suche nach effizientem C ++ (oder anderem schnellen), um eine riesige Hash-Tabelle zu invertieren.

Die Anzahl der Hash-Schlüssel liegt in der Größenordnung von 200.000.000. und die Anzahl der möglichen Elemente in jedem Hash-Schlüssel liegt in der Größenordnung von 100.000.

Ich würde gerne wissen, was ein guter Weg wäre, um eine solche Tabelle (effizient) zu invertieren, sodass jetzt die Elemente die Schlüssel und die Schlüssel die Elemente sind.

Im Moment habe ich die Daten auf meiner Festplatte in einer Datei namens hash_file.txt gespeichert. Die Datei sieht folgendermaßen aus:

>1
T1
T3
T4
T100
>2
T4
T77
T9980
etc.

Dabei sind> 1, ...,> 200.000.000 alle möglichen Schlüssel der ursprünglichen Hash-Tabelle. und T1, ..., T100000 sind alle möglichen Elemente für jede Taste. Anmerkung: Die Hash-Tabelle ist recht spärlich und enthält nicht mehr als ein paar hundert Elemente pro Schlüssel.

Die ausgegebene, invertierte Hash-Tabelle würde in diesem Beispiel so aussehen:

>T1
1
>T3
1
>T100
1
>T4
1
2
>T77
2
>T9980
2

Ich habe naiven Code ausprobiert und es hat ewig gedauert, bis mir das Gedächtnis ausgeht. Ich suche daher zunächst nach guten Vorschlägen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage