динамические имена матриц в C++ (библиотека Armadillo)

Я хочу сгенерировать k различных случайных матриц на С++ (с библиотекой Armadillo), где n сначала не исправлено и является входом в мою функцию. В Armadillo легко генерировать случайные матрицы, используя следующий код внутри цикла for:

 mat A = randu<mat>(n,n);

Но поскольку они нужны мне на следующих шагах, я должен назначить для них динамические имена или индексы, например. А1, А2, ... . Я хочу знать, какой метод лучше всего подходит для этого случая, кроме использования указателей?


person Jmath    schedule 18.04.2017    source источник
comment
Как насчет контейнера, например std::vector<mat>?   -  person aschepler    schedule 18.04.2017
comment
Там действительно нет способа сделать это, вам нужно будет использовать контейнер. Поскольку вы не знаете, сколько матриц у вас будет, вектор, вероятно, ваш лучший вариант.   -  person Nic    schedule 18.04.2017
comment
@Nic, не могли бы вы упомянуть, как я могу определить свой цикл for в этом случае, используя вектор?   -  person Jmath    schedule 18.04.2017
comment
Я не думаю, что фрагмент кода действительно поможет, я бы рекомендовал посмотреть учебник по векторам   -  person Nic    schedule 18.04.2017
comment
@aschepler спасибо. это работает в моем случае.   -  person Jmath    schedule 18.04.2017
comment
@Nic Я использовал векторы, и в моем случае это работает хорошо. Спасибо.   -  person Jmath    schedule 18.04.2017


Ответы (1)


Возможно, было бы удобнее (и эффективнее, но не проверял) вместо этого использовать куб броненосца:

cube A = randu<cube>(n,n,k);

Доступ к одной матрице в этом кубе будет осуществляться как A.slice(i) с 0 ≤ i ≤ k-1. Точно так же, как размеры кубов матриц могут быть изменены во время выполнения, вы можете динамически изменять свои n и k. Вы даже можете сохранить старые значения, используя A.resize(n',n',k')

person laolux    schedule 27.04.2017