1

我需要知道 Boost::Serialize 如何与 STL 容器一起工作 - 例如地图、矢量和列表。

具体来说,它是否在所有实际容器数据本身之前保存了整个容器的大小?

我可以读取该大小以了解 STL 容器的大小吗?

我在 Win7、64 位和 Visual Studio 2010 上。

谢谢。

4

1 回答 1

4

这是 boost 序列化std::vectors 的源代码:http: //www.boost.org/doc/libs/1_38_0/boost/serialization/vector.hpp

std::sets: http: //www.boost.org/doc/libs/1_38_0/boost/serialization/set.hpp

std::lists: http: //www.boost.org/doc/libs/1_38_0/boost/serialization/list.hpp

std::vector很明显它确实如此。如果您查看http://www.boost.org/doc/libs/1_38_0/boost/serialization/collections_load_imp.hpp实现头文件,我们会看到:

collection_size_type count;
//...
ar >> BOOST_SERIALIZATION_NVP(count);

load_collection函数中。std::list和序列化程序都std::set直接调用它。

于 2012-11-01T14:49:32.840 回答