我想分配一个 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;
}
也许有更好的方法。 short
到 char
的转换是隐式的。如果您想要显式转换,您应该考虑使用 std::transform
。
关于c++ - 如何分配/复制一个 Boost::multi_array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237723/