gpt4 book ai didi

vector 矩阵的 C++ Boost 序列化

转载 作者:行者123 更新时间:2023-11-30 02:26:16 27 4
gpt4 key购买 nike

我正在使用 <boost/serializaton> ,我需要序列化 vector 矩阵,X1 类的成员,比如:

vector<vector<vector<vector<X2>>>> V;

哪里:

  • X1 的构造函数将 V 初始化为 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;
}
}
}
}
}
//…
};

我尝试了后者(也许我应该反过来做?)也使用范围和其他不同的方式,老实说我已经删除但不记得了:它序列化但在从序列化文件读取时崩溃。我希望表达清楚,这是我的第一个问题。感谢您的帮助!

最佳答案

vector 支持是内置的,所以

template<class Archive>
void serialize(Archive& ar, const unsigned int version) {
ar & V;
}

对于数据结构来说是正确的。

关于 vector 矩阵的 C++ Boost 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43034902/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com