我需要知道 Boost::Serialize 如何与 STL 容器一起工作 - 例如地图、矢量和列表。
具体来说,它是否在所有实际容器数据本身之前保存了整个容器的大小?
我可以读取该大小以了解 STL 容器的大小吗?
我在 Win7、64 位和 Visual Studio 2010 上。
谢谢。
我需要知道 Boost::Serialize 如何与 STL 容器一起工作 - 例如地图、矢量和列表。
具体来说,它是否在所有实际容器数据本身之前保存了整个容器的大小?
我可以读取该大小以了解 STL 容器的大小吗?
我在 Win7、64 位和 Visual Studio 2010 上。
谢谢。
这是 boost 序列化std::vector
s 的源代码:http: //www.boost.org/doc/libs/1_38_0/boost/serialization/vector.hpp
std::set
s: http: //www.boost.org/doc/libs/1_38_0/boost/serialization/set.hpp
std::list
s: 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
直接调用它。