c++ - Eigen::RowVector 迭代器

标签 c++ vector iterator eigen

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

相关文章:

c++ - 理解策略模式

c++ - 使用 freeglut 在 Windows 10 上出现 glDebugMessageCallback 问题

c++ - C++ 异构集合调用派生类函数

vector - 将元素添加到嵌套向量

c++ - 具有依赖于早期参数的默认模板参数是否有效?

c++ - 使用 == 运算符的自定义类比较 vector

c++ - 多个 vector 的数据表示

c - C 中带有 char 迭代器的 FOR 循环是否可行?

Ruby:使用 `.each` 或 `.step` ,每次迭代向前推进一个随机数量

c++ - 过滤器列表 - C++