使用c ++,是否可以将数据存储到文件中,并按地址检索数据以便更快地访问?我想绕过必须解析或迭代大型数据文件,能够直接访问该数据的子集。在您的答案中,数据的存储方式无关紧要;无论你得到什么答案都是最好的。
答案 0 :(得分:3)
是。假设您正在使用iostream,您可以使用tellg
和tellp
分别检索当前的get和put(即读取和写入)位置。您可以稍后将相同的值反馈回seekg
或seekp
以返回到同一位置(再次,分别用于读取或写入)。
您可以使用这些(例如)在文件中创建索引。在将每条记录写入主数据文件之前,您可以使用tellp
来检索当前位置。然后,您将数据存储到数据文件中,并将返回的值tellp
保存到索引文件中。根据您想要的索引类型,可能只包含一系列位置,因此您可以直接在数据文件中记录#N(即使记录的大小不同)。
或者,您可以将某些关键字段的数据存储在索引文件中。例如,您可能有一个主数据文件,其中包含一组有关人员的记录。然后你可以建立一些索引,一个有姓氏,每个都有一个位置,另一个有生日,每个都有一个位置,等等,所以你可以按名字或生日搜索(或者做一个他们之间的交集来支持people older than 18 with a last name starting with "M", "N" or "O"
)等内容。