Pet*_*mit 8 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;
}
}
Run Code Online (Sandbox Code Playgroud)
用什么而不是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;
}
Run Code Online (Sandbox Code Playgroud)
可能有更好的方法.转换short为char隐含的.std::transform如果要进行显式转换,则应考虑使用.