7

有人可以告诉我到底如何迭代 Eigen::RowVectorXf 吗?

我通过网络和文档查找了 3 个小时,我只能从这个链接中找到,我可以通过以下方式访问它:

vector(i)
vector[i]

我有一个:

auto vec = std::make_shared<Eigen::RowVectorXf>( rowIndex.size() ); 

我想用词频填充。

Eigen::RowVectorXf::InnerIterator it(vec); it; ++it

不起作用,并且

Eigen::RowVectorXf::Iterator it(vec); it; ++it

不存在。

唯一似乎有效的是:

for ( int i = 0; i < vec->row( 0 ).size(); i++ )
{
    std::cout << vec->row( 0 )[i] << std::endl;
}

恕我直言,这似乎很奇怪,因为我不应该明确指向 row( 0 ),因为这是一个 RowVector。

没有更清洁、更快或更优雅的方式吗?

4

1 回答 1

10

不需要 row(0),您可以使用 ->coeff(i) (不推荐,因为它会跳过断言,即使在调试模式下也是如此),或者使用 operator* 取消引用您的shared_pointer

for(int i=0; i<vec->size(); ++i)
  cout << (*vec)[i];

您也可以使用 InnerIterator,但您必须取消引用shared_pointer

RowVectorXf::InnerIterator it(*vec); it; ++it
于 2013-05-30T06:18:39.900 回答