あなたが探している答えには2つの部分があります。
- マトリックス。
- これらすべての行列を保持するコンテナ。
したがって、行列について: 線形代数演算を行う予定がある場合は、事前に定義された多くの行列関数 (固有値、行列乗算など) が付属するArmadilloなどの特別なライブラリを使用することをお勧めします。特別な操作のない基本的な 2D データ ストレージである場合は、ベクトルの STL ベクトルを使用して行列を表すことをお勧めします。これらのコンテナーは動的なサイズ (実行中に自由に変更可能) であり、すべての要素はインデックスによってアクセス可能です。パトリックが言ったように、詳細情報はここにあります: cppreference.com。
1 で満たされた整数の 3x3 行列の例は次のようになります。
std::vector< std::vector<int,int> > matrix(3,std::vector<int>(3,1));
次に、これらの行列をどこかに保存する必要があります。このため、それは本当にあなたのニーズに依存するでしょう. 最も単純な解決策は、行列のベクトルです (つまり、ベクトルのベクトルのベクトルです)。コードは R とまったく同じように動作し、インデックスで行列にアクセスできます。同等の C++ コードは次のとおりです。
#include<vector>
using namespace std;
typedef vector< vector<int,int> > int_matrix_t;
...
vector<int_matrix_t> my_vector_of_matrices(10);
for (int i = 0; i<10; ++i) {
my_vector_of_matrices[i] = some_function_that_outputs_a_matrix(i);
}
しかし、他にもたくさんのコンテナがあります。このチャートを調べて、自分で選択してください。