Cómo asignar / copiar un impulso :: multi_array
-
11-09-2019 - |
Pregunta
Quiero asignar una copia de un impulso :: multi_array. Cómo puedo hacer esto. El objeto donde quiero asignarlo a se ha inicializado con los constructores por defecto.
Este código no funciona, debido a las dimensiones y tamaño no son los mismos
class Field {
boost::multi_array<char, 2> m_f;
void set_f(boost::multi_array<short, 2> &f) {
m_f = f;
}
}
Lo que hay que utilizar en lugar de m_f = f
?
Solución
Debe cambiar el tamaño m_f
antes de asignar. Podría verse como en el siguiente ejemplo:
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;
}
Puede ser que hay una manera mejor. short
conversión a char
será implícita. Debe considerar el uso std::transform
si quieres conversión explícita.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow