我需要一个程序来搜索文本文件的行,并查看它是否可以将其中之一与给定的字符串匹配。这些行按字母顺序排序,因此二进制搜索足以确定是否存在匹配项。
问题在于目标文件太大而无法放入RAM。以我为例,它约为10GB,但将来可能会变得更大。这意味着构建std::string
或类似类型的容器并对它们执行std::binary_search
的简单解决方案不适用。
另一方面,基于std::ifstream
或std::getline
的解决方案将顺序处理该文件,这似乎是对已排序文件的浪费。我需要这个过程要快。
是否可以在不将文件预加载到RAM的情况下执行二进制搜索或其他最佳解决方案?