我会散列每一行,然后寻找具有非唯一散列的行并单独比较它们(或以缓冲方式).这对于重复发生率相对较低的文件很有效.
当您使用散列时,您可以将使用的内存设置为恒定量(即,您可以使用仅有256个插槽或更大的小型散列表.在任何情况下,mem的数量都可以限制为任何常量. )表中的值是具有该散列的行的偏移量.所以你只需要line_count*sizeof(int)加上一个常量来维护哈希表.
更简单(但更慢)是扫描每行的整个文件.但我更喜欢第一种选择.这是最有效的内存选项.你只需要存储2个偏移和2个字节来进行比较.