没有ifstream的内存使用情况看最好的办法(ifstream best way to read

2019-09-22 06:07发布

我有一个包含作者和作者所写的书,一个文本。 我分配给写一个程序,用户将提供作者姓名。 而且程序必须打印的由作者写任何书籍名称。

我明白,我应该使用一个ifstream的读取此信息。 但我如何使它所以我的程序没有将整个文件读入内存(数组,向量等)来执行任何搜索查询的?

什么是解决这个的最佳方式? 我的程序应该使用类为好。

Answer 1:

我不知道全部答案,甚至语法,但上手的是什么,你知道的输入文本文件的格式做一个好办法? 难道仅仅像一个两列的文件:[作者图书]由常用的分隔符分开吗? 在这种情况下,你可以构建一个循环,在整个文件中去,只有条目存储到匹配搜索字符串的向量。



Answer 2:

这里在很大程度上取决于你打算如何经常寻找从文件书籍。 如果yo're只是要寻找一个或两个,那么最明智的方法可能是刚刚经历行的文件阅读对扫描找到你想要的人。

大多数其他方法假定你要查找的文件往往足以证明花一些额外的时间前后来来优化查询数据。 假设是正确的,一个可能性是通过读取通过文件,散列每个作者的姓名,并为作者/本书对“记录”的文件中的位置,以创建索引。

然后你就会偏移存储到一个单独的文件哈希/文件那些对。 当你想要做一个查询,你会读到这些散列/文件偏移到内存中。 哈希你要搜索的作者(使用相同的算法)的名字,看看哪些(如果有的话)文件偏移具有相同的哈希值。 寻求在文件中的点,并在这本书的记录中读取。 在这一点上,该文件已输入,在哈希冲突的情况下,作者姓名在再比较作者姓名。 显示你在哪里得到一个匹配的记录。



文章来源: ifstream best way to read without memory usage