Ищите что-то в C ++ для удобного хранения и доступа к матрицам разных размеров. Я обычно использую R, а в R я могу использовать цикл и сохранять матрицу в списке следующим образом (игрушечный пример)
myList <- list(1)
for(i in 1:10){
myList[[i]] <- matrix(rnorm(i^2),i,i)
}
Это дает мне список, где myList [[i]] даст мне i-ю матрицу. Есть ли что-нибудь подобное в C ++? Я видел функции Boost, которые могут создавать массивы разных размеров, но не могут применять их к матрицам. Попытка использовать Eigen или Armadillo, если это помогает сузить ответы.
В ответе, который вы ищете, есть 2 части, т.е.
Итак, для матриц: если вы планируете выполнять операции линейной алгебры, я бы рекомендовал использовать некоторые специальные библиотеки, такие как броненосец которая поставляется с множеством предопределенных матричных функций (например, собственное значение, умножение матрицы и т. д.). Если это просто базовое хранение 2D данных без специальных операций, то я бы рекомендовал использовать вектор STL вектора для представления ваших матриц. Эти контейнеры имеют динамический размер (могут быть изменены по желанию во время выполнения), и все элементы доступны по индексу. Как сказал Патрик, больше информации можно найти здесь: cppreference.com.
Пример матрицы целых чисел 3×3, заполненной 1 с, будет
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);
}
Но есть много других доступных контейнеров. Вы должны опросить этот график и выбери для себя!
Я считаю, что вы можете использовать std :: vector.
http://en.cppreference.com/w/cpp/container/vector
std::vector<Matrix> matrices;
matrices[i] = Matrix(data);