Odwróć dużą tabelę hash w Cpp lub innym szybkim języku

Szukam wydajnego C ++ (lub innego szybkiego) do odwrócenia ogromnej tabeli mieszania.

Liczba klawiszy skrótu jest rzędu 200 000 000; a liczba możliwych elementów w każdym kluczu mieszającym jest rzędu 100 000.

Chciałbym wiedzieć, co byłoby dobrym sposobem (efektywnym) odwrócenia takiej tabeli, tak że teraz elementami są klucze, a kluczami są elementy.

W tej chwili mam dane na moim dysku twardym zapisane w pliku o nazwie hash_file.txt. Plik wygląda tak:

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

Gdzie> 1, ...,> 200 000 000 to wszystkie możliwe klucze oryginalnej tablicy mieszającej; a T1, ..., T100000 to wszystkie możliwe elementy dla każdego klawisza. Uwaga: Tablica mieszania jest dość rzadka i nie zawiera więcej niż kilkaset elementów na klucz.

Wyjście, odwrócona tablica haszująca wyglądałaby następująco:

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

Wypróbowałem jakiś naiwny kod i zabrałem na zawsze i zabrakło memu, więc szukam dobrych sugestii na początek.

questionAnswers(2)

yourAnswerToTheQuestion