我要指派一个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什么?

有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top