Получение местоположения максимального коэффициента библиотеки Eigen C++ Vector

Я столкнулся с проблемой из-за неправильного понимания документации или из-за ошибки.

Я хочу получить положение максимального коэффициента вектора:

#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 ответ

Решение

Между двумя вариантами использования pos в твоей линии. Компилятор может свободно оценить второй pos перед звонком maxCoeff, Если вы инициализируете int pos = 42; это сделает это более очевидным.

Другие вопросы по тегам