c++ - 如何分配/复制一个 Boost::multi_array

标签 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

最佳答案

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

关于c++ - 如何分配/复制一个 Boost::multi_array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237723/

相关文章:

c++ - for_each 算法循环 boost::multi_array

c++ - 初始化 const boost multi_array

c++ - 格式化输出运算符标准 iostream 对象可以抛出什么样的异常?

c++ - 防止两个类从具有相同模板参数的基类继承

c++ - 构建 Boost BCP

c++ - 从函数返回 boost streambuf

c++ - 指向动态分配的 boost multi_array 中的类的指针,而不是编译

c++ - 有没有办法使用 typedef 中的参数名称

c++ - 当对象作为基本类型传递时如何创建派生对象拷贝? C++

c++ - 如何使用 volatile multimap 迭代器?