2010-03-23 6 views
3

부스트 매트릭스의 배열을 멤버 변수로 어떻게 정의 할 수 있습니까?부스트 행렬의 배열을 만드는 방법은 무엇입니까?

다음 중 아무 것도 작동하지 않았습니다.

boost::numeric::ublas::matrix<double> arrayM(1, 3)[arraySize]; 
boost::numeric::ublas::matrix<double>(1, 3) arrayM[arraySize]; 
boost::numeric::ublas::matrix<double> arrayM[arraySize](1, 3); 

감사합니다, 라비.

답변

3

초기화하는 크기는 유형과 아무 관계가 없습니다. 따라서 :

// this makes things easier! 
typedef boost::numeric::ublas::matrix<double> matrix_type; 

// this is the type (no initialization) 
matrix_type arrayM[arraySize]; 

문제는 배열을 초기화 할 때 발생합니다.

TheClass::TheClass() 
{ 
    std::fill(arrayM, arrayM + arraySize, matrix_type(1, 3)); 
} 

당신이 부스트를 사용하고 있기 때문에이 boost::array을 사용하는 것이 좋습니다 : 당신은이 작업을 수행 할 수 없습니다 모든

TheClass::TheClass() : 
arrayM(1, 3) // nope 
{} 

대신에, 당신이 그 (것)들을 기본-구조를 수 있도록해야하고 그들에게 크기를 조정 왜냐하면 더 멋진 구문을 제공하기 때문입니다.

typedef boost::numeric::ublas::matrix<double> matrix_type; 
typedef boost::array<matrix_type, arraySize> matrix_array; 

matrix_array arrayM; // ah 

TheClass::TheClass() 
{ 
    arrayM.assign(matrix_type(1, 3)); 
} 
3

배열 초기화는 기본 생성자를 사용합니다. 대신 벡터를 사용할 수 있습니다

class MyClass { 
    std::vector<boost::numeric::ublas::matrix<double>> vectorM; 
public: 
    MyClass() : vectorM(10, boost::numeric::ublas::matrix<double>(5,7)) { 
    } 
}; 
1

방법에 대해 :

// Assume: arraySize is a constant 
// Assume: #include <boost/tr1/array.hpp> 

typedef boost::numeric::ublas::matrix<double> doubleMatrixT; 
std::tr1::array<doubleMatrixT, arraySize> arrayM; 
arrayM.assign(doubleMatrixT(1, 3)); 

std::tr1::array 템플릿 편의 기능을 제공하는 기본 배열 주위에 (매우) 얇은 래퍼입니다. 예를 들어 여기서는 전체 배열을 단일 값으로 채우는 assign()을 사용했습니다.

3

초기화하려는 항목이 정확히 무엇인지 명확하지 않지만 arraySize 항목이있는 배열, 배열의 각 항목은 (1, 3)로 초기화됩니다. 컴파일 ...

const size_t arraySize = 3; 
boost::numeric::ublas::matrix<double> arrayM[arraySize] = 
{ 
    boost::numeric::ublas::matrix<double>(1, 3), 
    boost::numeric::ublas::matrix<double>(1, 3), 
    boost::numeric::ublas::matrix<double>(1, 3) 
}; 
+0

와우. 날 2 초 전에 똑같은 것을 올렸다. 나는 감동. 그것을 설명하는 좋은 링크가 있고 내 대답을 삭제하겠습니다 : http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5 –

관련 문제