Простой ответ заключается в том, что вы не можете, потому что типы данных должны быть специально объявлены во время компиляции.
Если вы можете использовать библиотеки boost,
boost::variant<int,float,double> vec;
может
Вы не можете использовать union
, потому что std::vector
не является POD (обычный статический тип данных).
EDIT:
Как заметил @Rob:
Указатели Void должны быть преобразованы в указатель на что-то еще - во время компиляции - прежде чем их можно будет использовать таким образом. Таким образом, ответ по-прежнему «не может» использовать указатели void для создания переменной типа данных.
blockquote>
Я не совсем уверен, почему вы не получили ошибку в первой инстанции, а получили только во второй. Но если вы измените свои строки, как показано ниже, все будет работать.
С
Cmap[1:,0,t] = list(ExcInhID*np.ones([Ncells-1,1])*(1 - min(max(t-T/3,0)*(1/(T/3)),0)))
....
Cmap[CC5,4,t] = list(ExcInhID*np.ones([Ncells-1,1])*(min(max(t-T/3,0)*(1/(T/3)),0)))
до
Cmap[1:,0,t] = np.stack(ExcInhID*np.ones([Ncells-1,1])*(1 - min(max(t-T/3,0)*(1/(T/3)),0)), axis=1)
....
Cmap[CC5,4,t] = np.stack(ExcInhID*np.ones([Ncells-1,1])*(min(max(t-T/3,0)*(1/(T/3)),0)), axis=1)