2013-12-18 28 views
0

这可能看起来微不足道,但我需要确保。C++(德)序列化的项目的向量顺序

当将一个std :: vector序列化到一个文件,然后将其从磁盘反序列化到内存时,vector中的项的索引保证是相同的(假设我没有有意识地在记忆)?

简单地说,将

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

总是有顺序的项目?

我正在使用cereal为(德)序列化,如果它的任何重要性。

谢谢!

PS:上述是否有例外情况?

回答

1

这取决于你的序列化。通常,序列化的顺序必须始终与反序列化相同,否则所有其他操作都会破坏从中反序列化的流。

在你的情况下,你应该深入谷物文档或问他们是否保证秩序,但我希望这种行为是一致的。

一种可能fallpit可能是地图(你在这里没提到)作为地图的内部结构是不是为了(大部分时间),其中数据加入

+0

感谢您的答复。有趣的是提到地图,虽然它是我关心的矢量。会给谷物的作者发一封电子邮件,看看他/她有什么要说的。 –

+0

我通过电子邮件发送了图书馆的作者之一,他向我保证,订单得到保留。但你可能是对的,它应该取决于实现,我只是假设在内存中连续的向量应该总是保持顺序。 –