我想计算一组纯文本文件中的单词出现次数。就像这里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容器。
答案 0 :(得分:0)
你可能想看看这个: http://stxxl.sourceforge.net/
这并不是你想要的(虽然足够接近),但我想你不会找到你想要使用Qt列表的确切内容。由于您正在实施alghoritm创建此列表,因此更改它的类型应该不是问题。据我记得在那些列表中你可以使用标准的stl排序alghoritms。唯一的问题仍然是表现。
答案 1 :(得分:0)
我认为地图包含单词和出现次数之间的关联。在这种情况下,为什么你说你有如此重要的内存消耗?你有多少不同的单词和形式,一个单词的平均内存消耗是多少?
考虑1.000.000个单词,每个单词有1K内存消耗(包括单词text,QMap特定存储),这将导致(aprox)1GB的内存,这......似乎没有那么多我