有人可以告诉我到底如何迭代 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/