读取文本文件而不占用内存的最佳方式
Best way to read text file without hogging memory
阅读文本文件的最佳方式是什么?例如,我有一个包含数百本书的文本文件。在这些书下面是作者等等,有些作者可以有多本书。
我该如何编写这个程序,以便在搜索或查找一条信息时不会将整个文件读取到内存中(数组、向量等)。假设我输入作者的名字,它就会找到他们写的每一本书。所以我很想知道最好的方法和最有效的方法。
我会在C++中对此进行编码
基本答案是FileStream。所以你在磁盘上的文件中寻找一个位置,然后从那里读取。然而,在这一点上,你将非常依赖磁盘io,你的文件必须符合某种结构,除非你想每次都从开始到目标进行读取。也就是说,它必须按作者顺序排列,即使可以接受,这也意味着搜索其他内容的效率将非常低。
解决问题的经典方法是索引文件。所以books.dat会有一个相关的authors.idx,它会说是一个作者和标题的列表,最好按作者排序。然后你就有了titles.idx,这就是标题,以及书在books.dat中开始的位置。文件中的下一个标题会告诉你这本书的长度。
当然,你必须维护这两个文件。如果应用程序不编辑文件,那么使用工具uo创建所需的索引将是一个很好的方法。
相关文章:
- 删除类成员的动态分配内存的最佳方法是什么
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- 组织从内存读取的数据的最佳方法(用于调试)c++
- C++动态内存最佳实践
- 如何使商店成为内存的开始和结束,以获得最佳拟合
- 读取内存值(实时)最佳实践
- 在C/C 中实现实时最佳拟合内存分配算法
- ifstream是在不使用内存的情况下进行读取的最佳方式
- 读取文本文件而不占用内存的最佳方式
- 在静态函数中释放内存的最佳方式
- 将图形存储到内存中的最佳方式
- API 设计是告诉 API 的使用者分配内存的最佳做法
- 将全局复制到共享内存的最佳方法
- C++容器:最佳内存管理
- 在构造函数中引发异常时防止内存泄漏的最佳做法是什么?
- 查找内存泄漏的最佳解决方案
- 包装总库的最佳实践内存管理
- 使用智能指针进行手动内存管理的最佳策略
- 分配大内存的最佳方式
- 为程序分配内存的最佳方式