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

我已经通过网络和文档查找了 3 个小时,我能找到的只是 from this link,我可以通过以下方式访问它:

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。

没有更干净、更快或更优雅的方式吗?

最佳答案

不需要 row(0),您可以使用 ->coeff(i) (不推荐,因为它跳过断言,即使在 Debug模式下),或使用 operator* 取消引用您的 shared_pointer :

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

您也可以使用 InnerIterator,但您必须取消引用您的 shared_pointer :
RowVectorXf::InnerIterator it(*vec); it; ++it

关于c++ - Eigen::RowVector 迭代器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16824977/

10-13 08:31