C++ を使用してテキスト ファイルの重複エントリを防止する方法

プログラミングQA


同じテキスト ファイルでプログラムを実行するたびにエントリが重複しないようにするためのアイデア。

前もって感謝します :)

私が試したこと:

まだ良いアイデアを探しています:(

解決策 1

そこに何があるかを知るには、テキストファイルを読み込む必要があります。
ファイルが (利用可能な RAM と比較して) 「小さい」場合は、 std::vector または std::map 内容を保存します。 ファイルが「大きい」場合は、出力時にファイル全体をスキャンする必要がある場合があります。 または、ファイル行のハッシュを作成できる場合は、新しい出力のハッシュ値を確認できます。 ただし、後者の場合、衝突に注意してください。

チェックする唯一の方法は、テキスト ファイル内のすべてのエントリを読み取り、そのすべてをチェックすることです。 テキストファイル自体には組織がなく、行もありません。そのため、別のファイルに追加してそれを維持しない限り、ハッシュ値のような「追加情報」を追加してプロセスを迅速または簡単にすることはできません。同じマシン上のアプリ インスタンスであっても、メモリを共有しません。

私は今日、このようなことをしなければなりませんでした。 何が違うかというと、2 つのディレクトリを比較して、1 つのディレクトリが欠落しているファイルをリストしていたことですが、それは本質的にまさにあなたがしなければならないことでした。 「ベース」ディレクトリ内のすべてのファイルのリストを作成し、他のディレクトリ内のすべてのファイルをリストで探し、そこにない場合は表示しました。 私の場合、そのリストは実際には文字列のベクトルでした。 私は約 200 個のファイルを持っていたので、マップとバイナリ検索の両方を使用しませんでした。デバッグ モードでも十分に高速でした。 同様の戦術をお勧めします。 入力データ項目のベクトルを保存してから、その中の新しい各項目を検索できます。



Source link

コメント

タイトルとURLをコピーしました