我需要知道Boost :: Serialize如何与STL容器一起工作 - 例如map,vector和list。
具体来说,它是否在所有实际容器数据本身之前保存整个容器的大小?
我是否可以读取该尺寸以了解STL容器的大小?
我在使用Visual Studio 2010的Win7,64位上。
感谢。
答案 0 :(得分:4)
以下是提升序列化std::vector
的源代码: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
序列化程序都会直接调用它。