Получение местоположения максимального коэффициента библиотеки 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;
это сделает это более очевидным.