我有一个包含数百万行的主文件。然后在从文件中读取每一行时,我需要在另一个文件中找到行数少得多(只有几千行)的行来做出决定。目前我正在使用 vector 在开头读取第二个文件,然后对于主文件中的每一行,我遍历 vector 以查找该行。问题是运行时间很长。有没有什么有效的方法来执行任务并将运行时间限制在某个合理的值。
最佳答案
您应该将第二个文件读入 std::map<std::string,int>
.映射键是行,值是在第二个文件中遇到行的次数。
这种检查是否可以在第二个文件中找到第一个文件的给定行的时间是恒定的,并且运行的总时间应该仅受磁盘驱动器读取第一个大文件内容的速度的限制。
关于c++ - 在 C++ 中搜索文件中的字符串以获得非常大的输入的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358291/