[英]How to access Eigen Vector Matrix< float, 2, 1 >
我正在遍历一个由Vector组成的vector
Matrix<float, 2, 1>
for(auto it = uvVertices.begin(); it != uvVertices.end(); ++it) {
std::cout << *it;
}
这给出了如下输出:
0.123120.212354
哪个是正确的,我如何仅访问第一个或第二个组件? 这样我就可以
0.12312
http://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html这是参考,但我无法弄清楚。
如果要获取容器的第n
个元素,可以使用std::next
,如下所示:
auto pos = 1; // Get the second element
auto it(std::next(uvVertices.begin(), k));
std::cout << *it;
只需通过取消引用uvVertices.begin()
即可访问初始元素,如下所示:
std::cout << *(uvVertices.begin()); // Get the initial element
如果我理解正确...您可以在循环内将迭代器取消引用为临时引用,以方便使用,并像访问任何Eigen
对象一样访问内部的系数:
for(auto it = uvVertices.begin(); it != uvVertices.end(); ++it) {
Matrix<float, 2, 1>& v = *it;
//auto& v = *it; // should also work
std::cout << v(0,0);
std::cout << v(1,0);
}
您还可以将范围用于:
for(auto& v : uvVertices) {
std::cout << v(0,0);
std::cout << v(1,0);
}
我也考虑将Eigen::Vector
类型用于向量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.