我想指定一个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
?
答案 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;
}
可能有更好的方法。转化short
到char
将是隐含的。如果您想要显式转换,则应考虑使用std::transform
。