同様ですstd::unordered_map<std::string, std::string>
が、すべてのデータはメモリではなくディスクに保存する必要があります。
私が理解しているように、インデックス作成とストレージの 2 つの部分を実行する必要があります。Linear-Hash や B-Tree など、インデックスに関するいくつかのデータ構造を学びました。ディスク上に int->int データベースを作成することはそれほど難しくありません。問題は収納です。
整数の場合、すべてのレコードが同じサイズになります。インデックス作成によって記録する位置を取得すると、簡単に抽出、変更、または遅延削除できます。ただし、文字列の場合、レコードは柔軟なサイズになります。(少なくとも) 次の問題があるはずです。
put() より長い文字列: 古いレコードを単純に上書きすることはできません。あえて del() と put() を実行すると、古いレコードのスペースが無駄になります。
del(): 古いレコードのスペースも浪費され、再利用できません。(ガベージコレクターで削除されたスペースを回収できるかもしれませんが、余分なスペースがかかり、フラグメントが作成されます)
int->int データベースの場合、いくつかの整数のためにスペースを無駄にすることは大きな問題ではありません。しかし、文字列が長くなるほど、無駄なスペースが増えます。
問題を解決するためのアドバイス/ヒントが必要です。