【问题标题】:C++ (de) serializing a vector order of itemsC ++(de)序列化项目的向量顺序
【发布时间】:2013-12-18 12:55:55
【问题描述】:

这可能看起来微不足道,但我需要确定。

当将 std::vector 序列化为文件,然后将其从磁盘反序列化到内存时,向量中项目的索引是否保证相同(假设我在内存中没有有意识地更改它) ?

简单地说,会

std::vector<int> v = {1, 2, 3, 4};

总是按那个顺序排列项目?

我正在使用cereal 进行(反)序列化(如果它有任何重要性)。

谢谢!

PS:以上有没有例外?

【问题讨论】:

    标签: c++ serialization vector


    【解决方案1】:

    这取决于您的序列化。通常,反序列化的序列化顺序必须始终相同,因为其他一切都会破坏反序列化的流。

    在您的情况下,您应该深入研究谷物文档或询问他们是否保证订单,但我希望行为是一致的。

    一个可能的错误可能是一张地图(你在这里没有提到),因为地图的内部结构不是添加数据的顺序(大多数时候)

    【讨论】:

    • 感谢您的回复。有趣的是提到地图,虽然我很关心它的向量。会给谷物的作者发一封电子邮件,看看他/她要说什么。
    • 我给图书馆的一位作者发了电子邮件,他向我保证,订单被保留了。但是您可能是对的,它应该取决于实现,我只是假设在内存中连续的向量应该始终保持顺序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2021-09-30
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多