Глядя на документацию, я заметил Scalar& coeffRef(Index i)
, и там написано:
Возвращает ссылку на значение коэффициента по данному индексу i.Эта операция включает бинарный поиск в журнале (rho * size).Если коэффициент еще не существует, то выполняется сортированная вставка в последовательный буфер.(Эта вставка может быть очень дорогой, если число ненулевых выше i велико.)
Поэтому должно работать следующее:
#define EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET
#include <Eigen/Sparse>
using namespace Eigen;
SparseVector<float> vec(3);
main()
{
vec.coeffRef(0)=1.0;
}
Не уверен, почему они так поступиливместо использования перегрузки массива.Возможно, когда он станет IS_STABLE, тогда они будут делать это более типично для C ++?