부스트를 할당 / 복사하는 방법 :: 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