2016-07-23 1 views
2

에 VectorXd 배열을 정의하기 위해, 다음과가 어떻게 <code>Eigen</code>에 <code>VectorXd</code> 배열을 정의 할 아이겐

void function(VectorXd * b, ...) 
{ 
    [snippet] 
    vector<VectorXd(b->rows())> xs(max_iter+1); 
    [snippet] 
} 

그래서, 나는 길이가 max_iter+1과의 모든 요소 배열을 정의 할 내 코드입니다 배열은 3X1 VectorXd입니다.

/path/to/solutions.h:187: error: invalid type in declaration before '(' token 
    vector<VectorXd(b->rows())> xs(max_iter+1); 
           ^
/path/to/solutions.h:187: error: 'b' cannot appear in a constant-expression 
    vector<VectorXd(b->rows())> xs(max_iter+1); 
        ^

나는이 버그를 수정하기 위해 무엇을 할 갈까요 : 그것은 컴파일 할 때

는하지만, 다음과 같은 오류를 반환? 고맙습니다! 당신이 intstd::vector에 작업 할 때

+0

'b'는 어떻게 생겼습니까? 어떻게이 함수를 호출합니까? – kangshiyin

+0

@kangshiyin,'b'는 Eigen에'VectorXd'를 입력하는 열 벡터입니다. –

+0

하지만'VectorXd'에는'.row() '라는 멤버 함수가 없습니다. – kangshiyin

답변

2

, 당신은 VectorXdstd::vector에 작업 할 때 마찬가지로, 이런 식으로 뭔가해야

std::vector<int> xs(size, init_value); 

를 사용합니다.

std::vector<VectorXd> xs(max_iter+1, VectorXd(b->rows())); 

그것은 < > 사이에 형 이름을 가지고 있지만, 당신은 객체 VectorXd(b->rows())를 사용합니다.

+0

고마워요. 이제 어떻게해야하는지 알아요. –