我想分配一个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
?
我想分配一个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
,如果你想显式转换。