获取Eigen C ++库Vector的最大系数的位置

时间:2014-05-30 16:36:23

标签: c++ eigen

由于我对这个问题的误解,我遇到了一个问题 文档或错误。

我想检索向量的最大系数的位置:

#include <Eigen/Core>
#include <iostream>

int main(int argc, char *argv[])
{
  Eigen::Vector3f v;
  int pos;

  v <<  1, 2, 3;

  std::cout << v.maxCoeff(&pos) << "\n" << "pos=" <<  pos << "\n";

  return 0;
}

返回的结果(pos)总是为零,无论最大值在哪里 价值是。通过调试,我已经看到了确实正确的值 (i,j)是在访问者中计算的,但似乎maxVisitor.col是 返回而不是maxVisitor.row。

最新的mercurial版本也会发生这种情况。

你认为这是一个错误吗?我应该提交错误报告吗?

1 个答案:

答案 0 :(得分:3)

您的行中pos的两次使用之间没有序列点。在调用pos之前,编译器可以自由评估第二个maxCoeff。如果您初始化int pos = 42;,则会更明显。