2010-12-08 30 views
0

我想計算一組純文本文件中的單詞出現次數。就像這裏http://doc.trolltech.com/4.5/qtconcurrent-wordcount-main-cpp.htmlC++ Qt WordCount和大數據集

問題是我需要處理非常大量的純文本文件 - 所以我在QMap中記錄的結果無法放入內存。

我googled外部內存(基於文件)合併排序算法,但我懶得實施自己。所以我想分成不同的部分來適應他們每個人的記憶。然後將這些部分存儲在磁盤上的文件中。然後調用magic函數mergeSort(QList,result_file)並在result_file中得到最終結果。

有沒有人知道這個算法的Qt兼容實現?

總之,我正在尋找pythons heapq.merge(http://docs.python.org/library/heapq.html#heapq.merge)模擬,但對於Qt容器。

回答

0

你可能想看看這個: http://stxxl.sourceforge.net/

這不正是你正在尋找(足夠接近雖然),但我想你不會找到你想要使用Qt名單的工作到底是什麼。既然你正在執行alghoritm創建這個列表,改變它的類型不應該是一個問題。據我記得在這些列表中,你可以使用標準的stl排序alghoritms。唯一的問題仍然是性能。

0

我假設地圖包含單詞和出現次數之間的關聯。在這種情況下,你爲什麼說你有這麼大的內存消耗?你可以有多少不同的單詞和表單,一個單詞的平均內存消耗是多少?

考慮到1.000.000字,每個字有1K的內存消耗(包括word文本,QMap特定的存儲空間),這會導致(aprox)1GB的內存,這似乎不是那麼多對我來說。