1

それで、200,000 語を含むこのテキスト ファイル (Aspell で生成) があります。単語が合法かどうかをチェックするために、クラブゲームに使用されます。つまり、単語が含まれていない場所で非常に多くのチェックが行われる可能性が高く、最も効率的な方法は何かと考えていました。

  1. 行ごとにテキストファイル行をチェックすると、チェックごとに 200,000 回の反復が必要になるため、それが私の最後の選択になります。

  2. QList 内のすべての単語を取得し、Qlist::contain() 関数 (または Qt4.8 を使用していると思われるので QList::indexOf()) を使用します。ただし、その効率についてはわかりません。かなりの量のメモリが使用されるでしょう。

  3. ハッシュテーブルの使用。正直なところ、それがどのように機能するかはわかりません.Qtデータ型が提供されているかどうかを誰かが知ることができれば、いくつかの調査を行うことができます.

他の効率的な方法はありますか?現在 QList メソッドに傾倒しており、実装が最も簡単なようです:)

4

3 に答える 3

0

リストを並べ替えます。1 回限りの操作です。並べ替えて保存するか、プログラムの起動時に並べ替えます。二分探索を使用します。200,000項目の任意の単語を検索すると、平均 17.6 回の検索が必要になり、最初の約 4 回の操作で 1 文字をチェックするだけで済みます。

于 2013-08-16T21:02:00.910 に答える