0

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

问题是我需要处理大量纯文本文件 - 所以我在 QMap 中的结果无法放入内存。

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

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

简而言之,我正在寻找 python heapq.merge (http://docs.python.org/library/heapq.html#heapq.merge) 模拟,但对于 Qt 容器。

4

2 回答 2

0

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

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

于 2010-12-08T19:44:05.227 回答
0

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

考虑到 1.000.000 个单词,每个单词消耗 1K 内存(包括单词文本、QMap 特定存储),这将导致(大约)1GB 的内存,这对我来说似乎并不多。

于 2010-12-08T19:50:15.843 回答