使用 C++ 删除文本文件中重复行的内存有效方法

2024-04-18

使用 C++ 删除大型文本文件中的重复行的最有效内存方法是什么?

让我澄清一下,我不是要求代码,只是最好的方法。不保证重复的行是相邻的。我意识到针对最小内存使用进行优化的方法会导致速度变慢,但这是我的限制,因为文件太大。


我会对每一行进行散列,然后返回具有非唯一散列的行并单独比较它们(或以缓冲方式)。这对于重复发生率相对较低的文件来说效果很好。

当您使用哈希时,您可以将使用的内存设置为恒定量(即,您可以有一个只有 256 个槽或更大槽位的小型哈希表。在任何情况下,内存量都可以限制为任何恒定量。 )表中的值是具有该散列的行的偏移​​量。所以你只需要 line_count*sizeof(int) 加上一个常量来维护哈希表。

更简单(但慢得多)的是扫描整个文件的每一行。但我更喜欢第一个选择。这是最有效的内存选择。您只需要存储 2 个偏移量和 2 个字节即可进行比较。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C++ 删除文本文件中重复行的内存有效方法 的相关文章

随机推荐