我正在遍历一个 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 这里是一个引用,但我无法弄清楚。

最佳答案

如果我理解正确......您可以将迭代器解引用到循环内的临时引用,以方便使用,并像使用任何 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);
}

您还可以使用 range-for:
for(auto& v  : uvVertices) {
    std::cout << v(0,0);
    std::cout << v(1,0);
}

我还会考虑对 vector 使用 Eigen::Vector 类型。

关于c++ - 如何访问特征向量矩阵< float, 2, 1 >,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23638085/

10-15 00:29