【问题标题】:How to assign / copy a Boost::multi_array如何分配/复制 Boost::multi_array
【发布时间】:2009-08-06 08:55:38
【问题描述】:

我想分配一个 boost::multi_array 的副本。我怎样才能做到这一点。我要为其分配的对象已使用默认构造函数进行了初始化。

此代码不起作用,因为尺寸和大小不一样

class Field {
  boost::multi_array<char, 2> m_f;

  void set_f(boost::multi_array<short, 2> &f) {
    m_f = f;
  }
}

用什么来代替m_f = f

【问题讨论】:

    标签: c++ boost boost-multi-array


    【解决方案1】:

    您应该在分配之前调整m_f 的大小。它可能类似于以下示例:

    void set_f(boost::multi_array<short, 2> &f) {
        std::vector<size_t> ex;
        const size_t* shape = f.shape();
        ex.assign( shape, shape+f.num_dimensions() );
        m_f.resize( ex );
        m_f = f;
    }
    

    可能有更好的方法。将short 转换为char 将是隐式的。如果你想要显式转换,你应该考虑使用std::transform

    【讨论】:

    • 真的吗? boost 没有提供任何方法来做到这一点?最多两个?
    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2023-03-06
    相关资源
    最近更新 更多