特征多个参考/相同数据的视图?

时间:2014-09-02 09:47:10

标签: c++ eigen

我希望有两个不同的Eigen容器指向相同的数据,其中一个引用是数据的不同视图/子集。

这样的事情:

Eigen::VectorXd v1(3);
v1 << 1,2,3;

Eigen::VectorXd v1(2);
v2.data = &v1(0); //pseudo code 

v1(1) = 5;

cout << v2(1) << endl;

v2(1)的值现在应为5。

提前致谢。

1 个答案:

答案 0 :(得分:0)

找到了一个可能的解决方案:

Eigen::VectorXd v1(3);
v1 << 1,2,3;

Eigen::Map<Eigen::VectorXd> v2(v1.head(0).data(),v1.size()-1);

//v2 prints as { 1, 2 } 

v1(1) = 9;

//v2 now  prints as { 1, 9 }    

这里有类似的问题: Get matrix views/blocks from a Eigen::VectorXd without copying (shared memory)

我似乎能够以Vector的大多数方式使用新的Map容器​​,所以我认为它是一个合适的替代品。