gpt4 book ai didi

c++ - 保存对象并以任何特定顺序加载它们

转载 作者:行者123 更新时间:2023-11-28 07:54:14 25 4
gpt4 key购买 nike

我正在寻找一种方法来保存和加载文件中的多种对象,并能够根据某种唯一标识符以任何特定顺序加载它们。我希望将每种类型对象的所有实例都存储在一个特定的不同文件中(例如 class1instances.dat、class2instances.dat 等等)。

我看过 Boost Serialization,但它似乎只能以与保存对象相同的(反向)顺序加载对象。我应该尝试扩展他们的 Archive 类,还是已经做了一些事情但我错过了?

最佳答案

每个类只有两个文件,而不是一个:“class1instances.dat”和“class1indeces.dat`。

第一个类是对象的连续文件,一个接一个。第二个文件用作第一个文件中对象的索引。它包含对象在第一个文件中的位置。例如,class1indeces.dat 看起来像:

0
1235
12343
43455
899432

意味着,第一个对象位于文件“class1instances.dat”的位置 0。第二个对象位于 1235 位置,依此类推。然后使用流搜索功能开始阅读。

另一种索引方式是key-value。您可以为每个对象拥有一个唯一的 ID,并写入每个对象 ID 及其对应的索引。例如:

0:0
2:1235
1:12343
320:43455
3:899432

例如,要检索 ID = 320 的对象,只需在文件中线性搜索 ID 320。当您找到它时,使用它的相应位置开始从它读取对象,直到下一个位置。

您还可以使用流 bin 模式来序列化您的对象。 Example .

关于c++ - 保存对象并以任何特定顺序加载它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13098983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com