C ++ Qt WordCount和大型数据集

时间:2010-12-08 18:40:12

标签: c++ qt word-count

我想计算一组纯文本文件中的单词出现次数。就像这里http://doc.trolltech.com/4.5/qtconcurrent-wordcount-main-cpp.html

一样

问题是我需要处理非常大量的纯文本文件 - 所以我在QMap中搜索的结果无法适应内存。

我用谷歌搜索外部存储器(基于文件)合并排序算法,但我懒得自己实现。所以我想按部分划分结果集以使每个部分适合内存。然后将这些部分存储在磁盘上的文件中。然后调用magic函数mergeSort(QList,result_file)并在result_file中得到最终结果。

有没有人知道这个算法的Qt兼容实现?

总之,我正在寻找pythons heapq.merge(http://docs.python.org/library/heapq.html#heapq.merge)analog,但是对于Qt容器。

2 个答案:

答案 0 :(得分:0)

你可能想看看这个: http://stxxl.sourceforge.net/

这并不是你想要的(虽然足够接近),但我想你不会找到你想要使用Qt列表的确切内容。由于您正在实施alghoritm创建此列表,因此更改它的类型应该不是问题。据我记得在那些列表中你可以使用标准的stl排序alghoritms。唯一的问题仍然是表现。

答案 1 :(得分:0)

我认为地图包含单词和出现次数之间的关联。在这种情况下,为什么你说你有如此重要的内存消耗?你有多少不同的单词和形式,一个单词的平均内存消耗是多少?

考虑1.000.000个单词,每个单词有1K内存消耗(包括单词text,QMap特定存储),这将导致(aprox)1GB的内存,这......似乎没有那么多我