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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Александр918
0 / 0 / 0
Регистрация: 14.02.2012
Сообщений: 4
#1

Выделение памяти под двумерный массив С++ - C++

21.06.2013, 22:59. Просмотров 693. Ответов 5
Метки нет (Все метки)

Гуру С++, подскажите новичку, как обратиться к элементу при следующем выделении памяти?
1)double **matr = new double *[row]
2)double *matr = new double [row*n]
В первом случае вроде бы так: *(*(matr+i)+j), а как во втором?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2013, 22:59     Выделение памяти под двумерный массив С++
Посмотрите здесь:

Выделение памяти под двумерный массив - C++
Доброе время ! Проблема такая : препод задал задачу сортировки массива произвольного типа(char* int* или double*) и сказал, чтобы любой тип...

Выделение памяти под двумерный массив - C++
Нужна прога на с++,в которой бы выделялась память для двумерного массива N строк такого вида,как на рисунке>>> За ранее спасибо:)

Динамическое выделение памяти под двумерный массив - C++
1) Ввести построчно элементы двумерного массива чисел. Количество столбцов задается. Количество строк (не менее 1) равно максимальному по...

Динамическое выделение памяти под двумерный массив - C++
Нужно написать программу, динамически выделяем память под двумерный массив, функции ввода-вывода, функцию, которая будет складывать 2...

Динамическое выделение памяти под двумерный массив - C++
Здравствуйте. Как мне правильно и грамотно (!) выделять память под двумерные массивы? Откуда возникла необходимость — хотел сделать...

Выделение памяти под динамический двумерный массив в структуре - C++
Доброво времени суток, дорогие товарищи-кодеры! Работав проектом, столкнулся с тем что удобно было бы запилить двумерный динамик в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,734
21.06.2013, 23:04     Выделение памяти под двумерный массив С++ #2
Цитата Сообщение от Александр918 Посмотреть сообщение
В первом случае вроде бы так: *(*(matr+i)+j), а как во втором?
а нормальные пути тебе уже не нравятся
1 matr[i][j]
2 mart[i*row+j]
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
21.06.2013, 23:05     Выделение памяти под двумерный массив С++ #3
C++
1
2
3
4
5
6
double **mass = new double [row]; // захват памяти под row столбцов
 
for (int i  = 0; i < row; i++)
{
   *(mass + i) = new double [col];  // захват памяти под каждую строку
}
дальше в коде например можно как mass[i][j] или *(*(mass + i) + j)

В вашем втором случае вы только захватите память под первую строку матрицы размером row * n
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,734
21.06.2013, 23:45     Выделение памяти под двумерный массив С++ #4
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
В вашем втором случае вы только захватите память под первую строку матрицы размером row * n
это называется квазидвумерный массив
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
21.06.2013, 23:56     Выделение памяти под двумерный массив С++ #5
@ValeryS, Не совсем понял, это как?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2013, 00:19     Выделение памяти под двумерный массив С++
Еще ссылки по теме:

Правильно ли в приведенном примере реализовано выделение и очищение памяти под двумерный вектор - C++
Скажите правильно ли я выделяю и очищаю память под двухмерный вектор class A { private: std::vector&lt; std::vector&lt;int&gt; &gt;* ...

Двумерный Массив,динамическое выделение памяти-ошибка - C++
Здравствуйте! Не могу найти ошибку в программе, некорректно работает именно с динамическим выделением памяти, со статическим все правильно...

Выделение памяти под массив - C++
в массиве данных хранять в последовательных ячейках памяти В программе, выделенна память под массив, для ввода данных пользователем. ...

Выделение памяти под массив - C++
Требуется выделить память под матрицу. Будет ли следующий код работать корректно? //глобальная область int x_size = 3; ...

Выделение памяти под статический массив - C++
меня тут заинтересовали строки std::string, никто не обращал внимания что в отладчике (ну хз конечно у кого как, но у меня в msvs pro 2013...

Выделение памяти под шаблонный массив - C++
template &lt;class T&gt; T* arrray &lt;T&gt;::create (unsigned size) { //..... T* templateBuf = new T ; for (unsigned index = 0;...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,734
22.06.2013, 00:19     Выделение памяти под двумерный массив С++ #6
ну например тебе нужно выделить память под такой массив
123
456
789
выделяешь как под одномерный
C++
1
2
3
4
5
int * arr=new int[3*3]
// и обращаешься так
for(int i=0;i<3;i++)
 for(int j=0;j<3;j++)
   arr[i*3+j] =i*3+j+1;
в памяти будет выделен один блок на 9 int
123456789
а не три блока по три int плюс еще блок на 3 указателя
данные лежат рядом как в статическом массиве
экономится память
недостаток
обращаться к членом массива не совсем удобно
Yandex
Объявления
22.06.2013, 00:19     Выделение памяти под двумерный массив С++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru