Форум программистов, компьютерный форум CyberForum.ru

Динамический трёхмерный массив (создать) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
06.12.2012, 14:55     Динамический трёхмерный массив (создать) #1
Помогите создать трёхмерный динамический массив.
C++
1
2
3
4
5
int size=10;
    int ***Field;
    Field=new int**[size];
    for(int i=0;i<size;i++)     Field[i]=new int*[size];
    for(int i=0;i<3;i++)        Field[i]=new int[3];
Ошибка:
error C2440: =: невозможно преобразовать "int *" в "int **"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 14:55     Динамический трёхмерный массив (создать)
Посмотрите здесь:

Динамический трёхмерный массив C++
Создать динамический массив указателей C++
C++ Создать класс-динамический массив
C++ Создать динамический массив
Создать динамический массив целого типа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
06.12.2012, 14:58     Динамический трёхмерный массив (создать) #2
C++
1
Field[i]
это двойной указатель.
Вам нужно что-то вроде
C++
1
Field[i][j]
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
06.12.2012, 15:01     Динамический трёхмерный массив (создать) #3
Если я правильно понял, вам нужно что-то вроде такого:
C++
1
2
3
4
5
6
7
8
9
10
int size=10;
int ***Field = new int** [size];
for (int i = 0; i < size; i++)   
{
    Field[i] = new int* [size];
    for(int j = 0; j < 3; j++) 
    {
        Field[i][j] = new int [3];
    }
}
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
06.12.2012, 15:03  [ТС]     Динамический трёхмерный массив (создать) #4
Благодарю за помощь!
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
06.12.2012, 15:05     Динамический трёхмерный массив (создать) #5
Цитата Сообщение от PraZuBeR Посмотреть сообщение
C++
1
2
3
4
Field[i] = new int* [size];
for(int j = 0; j < 3; j++) {
   Field[i][j] = new int [3];
}
Думаю скорее j < size в условии.
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
06.12.2012, 15:06     Динамический трёхмерный массив (создать) #6
gray_fox, спасибо, неуглядел.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.12.2012, 15:17     Динамический трёхмерный массив (создать) #7
Цитата Сообщение от FireProoF Посмотреть сообщение
Field[i]=new int[3];
Ну правильно. new int[3] возвращает простой указатель на int, а Field - тройной указатель на int. Ты используешь индекс, а указатель эквивалентен массиву? Эйис. 1 индекс, значит размерность элемента меньше, чем размерность массива на 1, то есть этот элемент - двойной указатель. Здесь нужны 2 индекса, а не 1. Кроме того, с учётом
Цитата Сообщение от FireProoF Посмотреть сообщение
int ***Field;
дай ка декларацию оператора [].
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
06.12.2012, 18:33  [ТС]     Динамический трёхмерный массив (создать) #8
А возможно ли присвоить значение таким образом:

C++
1
2
//до этого я объявил 3д массив
Field[1][1]=10;
Чёт не получается так.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
06.12.2012, 18:36     Динамический трёхмерный массив (создать) #9
FireProoF, нет. Какого результата ожидаешь?
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
06.12.2012, 18:37  [ТС]     Динамический трёхмерный массив (создать) #10
C++
1
2
Field[1][1]=10;
cout<<Field[1][1];
10
Если нельзя так, то зачем нужны 3D массивы? Или это только с динамическими?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
06.12.2012, 18:39     Динамический трёхмерный массив (создать) #11
то есть создали "трехмерный" массив, а обращаемся как к двухмерному?
C++
1
Field[1][1]
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
06.12.2012, 18:40     Динамический трёхмерный массив (создать) #12
FireProoF, так ведь Field[1][1] - это указатель.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 18:41     Динамический трёхмерный массив (создать)
Еще ссылки по теме:

Как создать динамический массив типа string? Как создать класс такого массива? C++
C++ Трёхмерный динамический массив
C++ Трёхмерный массив в Функцию

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
06.12.2012, 18:41     Динамический трёхмерный массив (создать) #13
у трехмерного массива три измерения, а значит и индекса тоже три
Yandex
Объявления
06.12.2012, 18:41     Динамический трёхмерный массив (создать)
Ответ Создать тему

Метки
Динамический, массив, трёхмерный
Опции темы

Текущее время: 00:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru