如何分配/复制一个boost :: multi_array的
-
11-09-2019 - |
题
我要指派一个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
。
不隶属于 StackOverflow