如何访问特征矢量矩阵<浮点数、2、1 >

How to access Eigen Vector Matrix< float, 2, 1 >

本文关键字:lt gt 浮点数 何访问 访问 特征      更新时间:2023-10-16

我正在迭代一个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);
}

我也会考虑使用Eigen::Vector类型的向量

如果您想获得容器的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