0

一連のプレーン テキスト ファイル内の単語の出現回数をカウントしたいと考えています。ここのようにhttp://doc.trolltech.com/4.5/qtconcurrent-wordcount-main-cpp.html

問題は、非常に大量のプレーン テキスト ファイルを処理する必要があることです。そのため、QMap で保存された結果がメモリに収まりませんでした。

外部メモリ(ファイルベース)のマージソートアルゴリズムをグーグルで検索しましたが、自分で実装するのが面倒です。そのため、結果セットを部分ごとに分割して、それぞれをメモリに収めたいと考えています。次に、この部分をディスク上のファイルに保存します。次に、魔法の関数 mergeSort(QList, result_file) を呼び出し、result_file に最終結果を入れます。

このアルゴリズムの Qt 互換の実装を知っている人はいますか?

要するに、私は pythons heapq.merge (http://docs.python.org/library/heapq.html#heapq.merge) アナログを探していますが、Qt コンテナー用です。

4

2 に答える 2

0

マップには、単語と出現回数の間の関連付けが含まれていると思います。この場合、なぜそんなに大量のメモリを消費していると言えるのでしょうか? いくつの異なる単語とフォームを使用できますか?また、1 つの単語の平均メモリ消費量はどれくらいですか?

1.000.000 ワードを考慮すると、1 ワードあたり 1K のメモリ消費量 (単語テキスト、QMap 固有のストレージを含む) を考慮すると、(約) 1GB のメモリが必要になりますが、これは私にはあまり思えません。

于 2010-12-08T19:50:15.843 に答える
0

これをチェックしてみてください: http://stxxl.sourceforge.net/

それはまさにあなたが探しているものではありませんが (十分に近いですが)、Qt リストで作業したいものを正確に見つけることはできないと思います。このリストを作成するアルゴリズムを実装しているので、そのタイプを変更しても問題ありません。これらのリストで覚えている限り、標準の stl ソートアルゴリズムを使用できます。唯一の問題はパフォーマンスのままです。

于 2010-12-08T19:44:05.227 に答える