割り当てる方法/ブースト:: multi_arrayをコピーします
-
11-09-2019 - |
質問
私はブースト:: 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