MTL中向量、矩阵的初始化

本文介绍了MTL库中向量和矩阵的初始化方式。对于向量,存在VectorContainer用于内存分配并用resize()函数调整大小,而VectorExtern则不分配内存,仅导入数组。矩阵初始化涉及EMatrix和CMatrix,前者不分配内存,后者可动态分配。创建矩阵的方式包括直接指定行和列,使用已有的数组,以及从多个向量构建矩阵。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MTL的类定义很有特点, 对向量类而言, 定义了两个类, 分别负责用一个值初始化和用数组初始化。这两个类分别是

typedef dense1D<double> VectorContainer;
typedef external_vec<double> VectorExtern;

其中VectorContain分配内存,并且用resize(size_t)函数重新分配内存;

VectorExtern不分配内存,只负责将数组导入对象中。如果想在类中定义一个向量作为成员变量,应该使用VectorContainer。

初始化时:

 VectorContainer vv(10,1.0);
 double dd[3] = {1.0,2.0,3.0};
 VectorExtern vvv(dd,3);

对矩阵而言,使用模板类matrix,在运行时生成两个类:

typedef matrix< double,
                rectangle<>,
                dense<external>,
                row_major >::type EMatrix;
  
typedef matrix< double,
                rectangle<>,
                dense<>,
                row_major >::type CMatrix;

和向量一样,EMatrix不分配内存,CMatrix可以分配内存

当新建一个矩阵时,可以

CMatrix matrix(row,col);

如果已经有了n维数组,想用数组建立一个矩阵,可以

double da[row*col];

EMatrix matrix(da,row,col);

如果有了n个n维向量,想建立一个n×n的矩阵,可以

CMatrix matrix(row,col);

mtl::copy(vec0,matrix[0] );

mtl::copy(vec1,matrix[1]);

我也是刚接触MTL,上述方法可能不是最好的方法,如果我知道更好的方法,会及时更新的。

如果大家知道有更好的方法,麻烦给我留言,在此谢过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值