Я пишу класс нейронной сети с Eigen в качестве моей линейной алгебры Algebra, и я хотел бы знать, как я создаю массив, в котором каждый элемент имеет другой тип, который будет определен в во время выполнения.Построение массива с различными типами
Я нашел this, но это не сработало для меня.
Все, что я хочу, это доступ к матрицам разного размера с помощью метода доступа к массиву, то есть vMatrix [i].
Edit:
Прототип базового класса:
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++, я думаю о способе решить эту проблему: используя struct с void * и некоторый механизм для хранения типа элементов или строки & col; но я с тех пор, как изучаю C++, я бы хотел этого избежать.
У объектов, которые вы хотите сохранить в своем массиве, есть общий базовый класс? Если да, то вы можете использовать полиморфизм. –
Я не уверен, что Eigen поддерживает нечисловые типы. –
Для этого вы можете использовать 'boost :: variant' или' boost :: any'. Если вы не можете использовать boost, см. [This] (http://stackoverflow.com/a/16770536/845568) ответ на пример реализации базового варианта. –