我正在编写一个神经网络类Eigen作为我的线性代数后端,我想知道如何创建一个数组,其中每个元素具有不同的类型,在运行时确定。
我找到了this,但它对我不起作用。
我想要的是能够使用类似数组的访问方法访问不同大小的矩阵,即vMatrix [i]。
编辑:
基类的原型:
template<typename T, unsigned _Rows, unsigned _Cols> Eigen::Matrix;
我正在尝试做什么:
vector< DerivedMatrix > vMatrix;
vMatrix.push_back(some_5x4_matrix);
vMatrix.push_back(some_4x10_matrix);
vMatrix.push_back(some_10x1_matrix);
之前未定义矩阵大小。
因为我比C ++更了解C,所以我想到了一种方法来解决这个问题:使用带有void *的struct和一些用于存储项类型或行和放大器的机制。山坳;但是,因为我正在学习C ++,所以我想避免这种情况。
答案 0 :(得分:0)
如果您希望支持预先确定的有限类型,则可以使用Boost Variant。
您还可以使用Boost Any作为数组/向量的元素类型。
答案 1 :(得分:0)
以下代码段如何?就动态大小而言,您可以使用.resize()函数随时调整矩阵的大小。这有帮助吗?
#include<iostream>
#include<vector>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main(int argc,char **argv){
vector<MatrixXf> A;
MatrixXf P = MatrixXf::Random(2,3);
MatrixXf Q = MatrixXf::Random(4,5);
MatrixXf R = MatrixXf::Random(3,4);
A.push_back(P);
A.push_back(Q);
A.push_back(R);
cout<<A[0]<<endl<<A[1]<<endl<<A[2]<<endl;
return 0;
}