我需要知道 Boost::Serialize 如何与 STL 容器一起工作 - 例如 map、vector 和 list。
具体来说,它是否在所有实际容器数据本身之前保存了整个容器的大小?
我能否读取该尺寸以了解 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
序列化程序都直接调用它。
关于c++ - Boost 如何序列化 STL 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179463/