Приведите элемент в собственном векторе/матрице к примитивному двойному типу

#c #eigen

Вопрос:

В принципе, как мне это сделать

 Eigen::RowVectorXd param(2);
param << 1.0, 2.0;
double last_element = param.tail(1); // error: no suitable conversion...
 

Я знаю, что могу использовать .coeff() , однако в моем коде некоторые векторы изменяются, поэтому размер априори неизвестен

Комментарии:

1. Чтобы исправить код, вы могли бы написать double last_element = param.tail(1)[0] . При этом выбирается первый элемент возвращаемого вектора tail() , что позволяет присвоить значение double. Лучшие решения даны в ответе @mattlangford.

Ответ №1:

Сработало бы что-то подобное:

     Eigen::RowVectorXd param(2);
    param << 1.0, 2.0;
    double last_element = param(param.size() - 1);
 

или даже лучше, используя собственное last значение:

     double last_element = param(Eigen::last);