class Test
에 Test :: _ a에 매핑되는 Eigen :: Matrix가 있어야합니다. 이것은 std :: vector를 변경할 때마다 벡터와 행렬이 동일한 메모리 덩어리를 사용하여 데이터를 보유하기 때문에 Eigen :: Matrix가 즉시 변경 내용을 반영한다는 것을 의미합니다.std :: vector 속성에 매핑되는 Eigen :: matrix 특성을 가진 클래스가 있습니다
이 작동 :
#include <Eigen/Dense>
#include <vector>
int main() {
std::vector<int> a;
a.resize(10);
typedef Eigen::Matrix<int, 1, Eigen::Dynamic> mat_type;
Eigen::Map<mat_type> a_eigen(a.data(), a.size());
}
그러나이 작동하지 않습니다 .... 당신이 필요로하는
#include <Eigen/Dense>
#include <vector>
#include <iostream>
class Test {
public:
typedef Eigen::Matrix<int, 1, Eigen::Dynamic> mat_type;
Test(int size) {
_a.resize(size);
Eigen::Map<mat_type>(_a_eigen) = Eigen::Map<mat_type>(_a.data(), size);
for (int i = 0; i < size; ++i) _a[i] = i;
}
std::vector<int> _a;
mat_type _a_eigen;
};
int main() {
Test t(10);
std::cout << t._a_eigen;
}
나는 downvoted 이유가없는 것처럼 보입니다. –