c++ - Boost 如何序列化 STL 容器?

标签 c++ serialization boost

我需要知道 Boost::Serialize 如何与 STL 容器一起工作 - 例如 map、vector 和 list。

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

我能否读取该尺寸以了解 STL 容器有多大?

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

谢谢。

最佳答案

这里是 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::liststd::set 序列化程序都直接调用它。

关于c++ - Boost 如何序列化 STL 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179463/

相关文章:

c++ - 为什么 c_str() 会为两个不同的字符串返回相同的值?

c++ - 断言函数如何在失败时返回文件名和代码行

c++ - 将模板类拆分为头文件和实现文件时使用类型别名

python - Django Rest Framework ModelSerializer 在创建时设置属性

c++ - 在 C 中将结构序列化/反序列化为 char*

c++ - 配置文件解析器

c++ - C++ 中的 OpenGL 入门

java - Java 自动指针调整?

c++ - BOOST_STATIC_ASSERT 没有 boost

c++ - 遍历 uBlas 稀疏矩阵的非零元素