由于我对这个问题的误解,我遇到了一个问题 文档或错误。
我想检索向量的最大系数的位置:
#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版本也会发生这种情况。
你认为这是一个错误吗?我应该提交错误报告吗?
答案 0 :(得分:3)
您的行中pos
的两次使用之间没有序列点。在调用pos
之前,编译器可以自由评估第二个maxCoeff
。如果您初始化int pos = 42;
,则会更明显。