Я хотел создать трехмерный массив в следующем коде, но я получаю ошибку времени выполнения.Как создать трехмерный динамический массив
int dim1,dim2,dim3;
std::cout<<"dim one\n";
std::cin>>dim1;
std::cout<<"dim two\n";
std::cin>>dim2;
std::cout<<"dim three\n";
std::cin>>dim3;
int ***three_dim=0;
three_dim=new int**[dim1];
for(int i=0;i<dim1;++i)
three_dim[i]=new int*[dim2];
for(int k=0;k<dim2;++k)
three_dim[k]=new int*[dim3];
for(int k=0;k<dim1;++k)
for(int i=0;i<dim2;++i)
for(int j=0;j<dim3;++j)
three_dim[k][i][j]=0;
EDIT:
это является обязательным условием, что я использовать трехмерный массив. Я создал двухмерный массив с тем же стилем и хотел бы расширить его до трех, потому что это то, что мне нужно. Но, как вы видите, я смутился.
Спасибо Бо Перссон
a) Оберните одномерный массив в классе и выполните сами индексы-математику. B) Используйте вектор векторов векторов ints. C) Используйте boost :: multi_array. Просто не делай того, что делаешь прямо сейчас. – jrok
Каждый раз, когда вы пишете '***', и это не комментарий, будильники должны уходить в голове. –
Да, [Программист трех звезд] (http://c2.com/cgi/wiki?ThreeStarProgrammer) –