如何分配/复制Boost :: multi_array

时间:2009-08-06 08:55:39

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

我想指定一个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

1 个答案:

答案 0 :(得分:5)

您应该在分配前调整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;
}

可能有更好的方法。转化shortchar将是隐含的。如果您想要显式转换,则应考虑使用std::transform