我在学校有这个守则:
#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
是模板类型的名称(可能被实例化为double或int),而dynMat_t
是Matrixtype,如MatrixX“Scalar”。现在我挣扎着dynMat_t::Scalar
的意思,这是矩阵/向量条目的value_type的描述,为什么你需要类型entry_t
?
我看不出这段代码的意思。
非常感谢您的帮助。