相关疑难解决方法(0)

使用谷歌库序列化Eigen :: Matrix

更新:我用谷歌搜索并在代码中读取doxygen注释后设法让它工作.问题是我在使用resize()方法之前错过了演员,也没有std::ios::binary用于流.如果你想做类似的事情,最好检查Azoth的答案.

我正在尝试Eigen::Matrix使用Cereal 序列化类型.这就是我所拥有的(松散地基于https://gist.github.com/mtao/5798888和其中的类型cereal/types):

#include <cereal/cereal.hpp>
#include <cereal/archives/binary.hpp>
#include <Eigen/Dense>
#include <fstream>

namespace cereal
{
    template <class Archive, class _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols> inline
        typename std::enable_if<traits::is_output_serializable<BinaryData<_Scalar>, Archive>::value, void>::type
        save(Archive & ar, Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> const & m)
    {
            int rows = m.rows();
            int cols = m.cols();
            ar(make_size_tag(static_cast<size_type>(rows * cols)));
            ar(rows);
            ar(cols);
            ar(binary_data(m.data(), rows * cols * sizeof(_Scalar)));
        }

    template <class …
Run Code Online (Sandbox Code Playgroud)

c++ serialization eigen c++11 cereal

3
推荐指数
1
解决办法
2099
查看次数

标签 统计

c++ ×1

c++11 ×1

cereal ×1

eigen ×1

serialization ×1