Eigen :: RowVector迭代器

Æle*_*lex 5 c++ iterator vector eigen

有人可以告诉我,我怎么能迭代一个Eigen :: RowVectorXf?

我已经通过网络和文档查找了3个小时,我能找到的所有内容都来自此链接,我可以通过以下方式访问它:

vector(i)
vector[i]
Run Code Online (Sandbox Code Playgroud)

我有一个:

auto vec = std::make_shared<Eigen::RowVectorXf>( rowIndex.size() ); 
Run Code Online (Sandbox Code Playgroud)

我想用字频率填充.

Eigen::RowVectorXf::InnerIterator it(vec); it; ++it
Run Code Online (Sandbox Code Playgroud)

不起作用,和

Eigen::RowVectorXf::Iterator it(vec); it; ++it
Run Code Online (Sandbox Code Playgroud)

不存在.

似乎唯一有用的是:

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

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

是不是有更干净,更快或更优雅的方式?

gga*_*ael 9

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

for(int i=0; i<vec->size(); ++i)
  cout << (*vec)[i];
Run Code Online (Sandbox Code Playgroud)

你也可以使用InnerIterator,但你必须取消引用你的shared_pointer:

RowVectorXf::InnerIterator it(*vec); it; ++it
Run Code Online (Sandbox Code Playgroud)