Я получил этот код в школе:Unterstanding шаблонов и код с Эйгеном библиотекой
#include <Eigen/Dense>
template<<typename Scalar>
void Typedemo(unsigend int dim)
{
using dynMat_t =
Eigen::Matrix<Scalar,Eigen::Dynamic,Eigen::Dynamic>;
using dynColVec_t= Eigen::Matrix<Scalar,Eigen::Dynamic,1>;
using dynRowVec_t = Eigen::Matrix<Scalar,1,Eigen::Dynamic>;
using index_t = typename dynMat_t::Index;
using entry_t = typename dynMat_t::Scalar;
dynColVec_t colvec(dim);
dynRowVec_t rowvec(dim);
for (index_t i=0; i< colvec.size(); ++i) colvec(i) = (Scalar)i;
for (index_t i=0; i< rowvec.size(); ++i) rowvec(i) = (Scalar)1/(i+1);
dynMat_t vecprod = colvec*rowvec;
const int nrows = vecprod.rows();
const int ncols = vecprod.cols();
}
Я думал Scalar
это имя типа шаблона (который может быть реализован в виде двойной или межд) и dynMat_t
это Matrixtype, как MatrixX «Скаляр». Теперь я борюсь со значением dynMat_t::Scalar
, это описание значения_типа элементов матрицы/вектора и зачем вам нужен тип entry_t
?
Я не вижу смысла в этом коде.
Большое спасибо за любую помощь.
Скаляр выглядит как любой тип, который вам нужно увидеть, это шаблон. Скорее всего, это матрица, но я смущен тем, что вы спрашиваете. – Phorce
Может быть, у 'Eigen :: Matrix' есть typenames' Index' и «Скаляр»? Я не уверен, как выглядит «Eigen :: Matrix», поэтому вы можете посмотреть там. – funkysidd