C++ 促进向量矩阵的序列化
C++ Boost serialization of a matrix of vectors
我正在使用<boost/serializaton>
,我需要序列化向量矩阵,类 X1 的成员,说:
vector<vector<vector<vector<X2>>>> V;
哪里:
- V
- 由 X1 的构造函数初始化为 V[N][M][S]。
- X2 是一个类,拥有一些成员和 getter/setter,有自己的 serialize(( 函数(它序列化两个 std::strings(,它也由 X1 的 constr 初始化。
问题是:如何序列化 V?
我尝试了不同的方法,但没有一个奏效。我已经阅读了 Boost 站点中的文档及其示例,但我缺少一些东西。事情是这样的:
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/serialization/vector.hpp>
// I tried with the simplest way:
class X1{
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int version) {
ar & V;
}
//…
};
// or by calling serialization in a explicit way for each object of V:
class X1{
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int version) {
ar & V;
for (auto it = V.begin(); it != V.end(); ++it) {
ar & *it;
for (auto jt = (*it).begin(); jt != (*it).end(); ++jt) {
ar & *jt;
for (auto kt = (*jt).begin(); kt != (*jt).end(); ++kt) {
ar & *kt;
for (auto wt = (*kt).begin(); wt != (*kt).end(); ++wt) {
ar & *wt;
}
}
}
}
}
//…
};
我尝试了后者(也许我应该反向这样做?(也使用范围和其他不同的方式,老实说我已经删除并且不记得了:它序列化但在从序列化文件读取时崩溃。我希望已经清楚地表达了自己,这是我的第一个问题。感谢您的帮助!
内置矢量支持,所以
template<class Archive>
void serialize(Archive& ar, const unsigned int version) {
ar & V;
}
对于数据结构来说是正确的。
相关文章:
- 如何在C++中序列化结构数据
- 序列化,没有库的整数,得到奇怪的结果
- C++中整数向量的序列化/反序列化
- 使用原始字节向量作为提升序列化的存档的任何方法
- 使用 boost::序列化将派生类指针序列化为向量时出现问题
- 对象的序列化向量为STD :: String,以与MPI一起使用
- 使用 FlatBuffers 序列化对象的向量
- 使用谷物序列化/反序列化 SFML 向量类
- C++ 促进向量矩阵的序列化
- 如何在服务器 C++ 上发送(序列化?)浮点向量
- C 添加自定义XML标签,用于序列化对向量
- C :序列化类实例的向量
- 如何通过Boost MPI传递序列化类的向量
- C 用向量序列化对象会导致双重自由损坏
- 如何使用boost c++反序列化对和对象的向量
- C++ (de) 序列化项的向量顺序
- 如何过载<<用于YAML::Emitter的运算符,以序列化包含另一个自定义类的向量的自定义类
- 指针的向量.提升序列化
- 指针的向量C++提升序列化错误
- 序列化浮点数向量