Wie zuweisen / kopieren ein Boost :: multi_array
-
11-09-2019 - |
Frage
Ich möchte eine Kopie einer boost :: multi_array zuzuweisen. Wie kann ich das machen. Das Objekt, wo ich will es zuzuordnen ist mit den Standardkonstruktoren initialisiert wurde.
Dieser Code funktioniert nicht, da die Abmessungen und Größe ist nicht die gleiche
class Field {
boost::multi_array<char, 2> m_f;
void set_f(boost::multi_array<short, 2> &f) {
m_f = f;
}
}
Was statt m_f = f
zu benutzen?
Lösung
Sie sollten die Größe m_f
vor zuweisen. Es könnte wie folgt aussehen in dem folgenden Beispiel:
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;
}
Vielleicht gibt es einen besseren Weg. Umwandlung short
zu char
wird implizit sein. Sie sollten mit std::transform
prüfen, ob Sie explizite Konvertierung wollen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow