0

C++ コードを使用して、特定のフォルダー (/tmp/) にいくつかのファイルを保存したいと考えています。ファイルを保存する前に

  1. 十分なメモリが使用可能かどうかを確認する必要があります。そうでない場合は、ストレージから最も古いファイルを削除してから、新しいファイルを保存する必要があります。
  2. コードにアクセスするには、保存されているファイルの詳細を知る必要もあります。

私の実装は次のとおりです。

std::map<string IfileName, int iDetail>

Map インスタンスを作成し、ファイル データを作成するたびに、詳細をマップに保存しました。マップの問題は次のとおりです。

  1. マップはファイル名を自動的にソートします。そのため、最も古いファイルを特定できません。
  2. ファイルがストレージで削除され、マップにもそのファイルに関する詳細があるとします。
4

2 に答える 2

0

ある時点で、マップと両端キューを組み合わせて同様の問題を解決しました。トリックは、(map と deque の両方で) 各 value_type をクロス ポインターで拡張する必要があることです。そのため、特定のキーを使用して map.find() を実行すると、受け取る値に両端キュー内の要素へのポインターが含まれます。およびその逆。最も古い (LRU) ファイルを見つけるには、deque.pop_back() を実行し、マップに取得したポインターを逆参照し、詳細を表示して、もう 1 つのファイルを削除する必要があるかどうかを判断します。

于 2012-05-10T08:25:53.283 に答える