【发布时间】:2017-05-18 01:19:15
【问题描述】:
我最近一直在自学 C++,并想在一个新项目中尝试一下。我决定使用 Eigen 构建一个非常简单的机器学习库来存储和操作数据。我想要一个数据类来存储特征矩阵,并且可以对所述矩阵执行洗牌和分区操作。
我的麻烦在于确定成员矩阵的类型。理想情况下,我可以使用已经创建的特征矩阵调用构造函数,并让成员矩阵采用该类型。
如果我想初始化成员矩阵的类型,我应该创建什么类型的成员矩阵 基于传递给构造函数的矩阵类型?有没有办法在不指定任何类型的模板参数的情况下做到这一点?
template <class T1, class T2, class T3>
class Data{
private:
Eigen::MatrixBase<T1,T2,T3> X;
public:
Data(Eigen::Matrix<T1,T2,T3> feature_matrix ): X{feature_matrix};
};
int main()
{
Eigen::Matrix<int,2,2> m;
m<<1,2,3,4 ;
Data d(m); //doesn't work because Data is missing template args
return 0;
}
补充一下这个问题,因为矩阵类似乎没有移动构造函数,有没有什么聪明的方法来构造一个数据类而不将矩阵复制到类中?
【问题讨论】: