簡體   English   中英

構造各種類型的數組

[英]Constructing a array with various types

我正在編寫一個以Eigen作為我的線性代數后端的神經網絡類,我想知道我如何創建一個數組,其中每個元素具有不同的類型,並在運行時確定。

我找到了,但是對我沒有用。

我想要的是能夠使用類似數組的訪問方法(即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和某種機制來存儲項目類型或row&col; 但由於我正在學習C ++,所以我想避免這種情況。

如果您希望支持預定的有限類型集,則可以使用Boost Variant

您也可以將Boost Any用作數組/矢量的元素類型。

以下代碼段怎么樣? 就動態大小而言,您可以使用.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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM