c++ - 在 C++ 中搜索文件中的字符串以获得非常大的输入的有效方法

标签 c++ performance string-search

我有一个包含数百万行的主文件。然后在从文件中读取每一行时,我需要在另一个文件中找到行数少得多(只有几千行)的行来做出决定。目前我正在使用 vector 在开头读取第二个文件,然后对于主文件中的每一行,我遍历 vector 以查找该行。问题是运行时间很长。有没有什么有效的方法来执行任务并将运行时间限制在某个合理的值。

最佳答案

您应该将第二个文件读入 std::map<std::string,int> .映射键是行,值是在第二个文件中遇到行的次数。

这种检查是否可以在第二个文件中找到第一个文件的给定行的时间是恒定的,并且运行的总时间应该仅受磁盘驱动器读取第一个大文件内容的速度的限制。

关于c++ - 在 C++ 中搜索文件中的字符串以获得非常大的输入的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358291/

相关文章:

c++ - QSqlQuery 使用数百 MB 内存

c++ - 使用 fstream 向所有用户发送消息

c++ - 委派到私有(private)领域

c++ - 如何减少 OpenGL CPU 使用率和/或如何正确使用 OpenGL

performance - 当您想发送匿名函数时,执行 (Runnable & Serialized) 是否太昂贵?

c# - 使用 MemoryMappedFile 对大型文本文件执行搜索是否有意义?

c# - 在大网格中路由路径的最佳方法是什么?

java - 更改 ArrayList 中元素顺序的最快方法是什么?

c - 在C中搜索多个单词,并在它们后面显示以逗号分隔的信息

c++ - 优化单个字节的字符串搜索