Æ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.
是不是有更干净,更快或更优雅的方式?
不需要行(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)