Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2011, 18:44   #1
JuniorProger
Форумчанин
 
Регистрация: 16.09.2011
Сообщений: 114
По умолчанию Создание двумерного массива в С++

Привет всем, кто смотрит эту тему!
Пробежал быстренько поиском форум - не нашел что хотел (может плохо искал). У меня такая проблема: нужно создать матрицу размера N*N; размерность вводится пользователем; матрица должна лежать в смежных участках памяти (т.е. как бы последовательно).
Теперь собственно вопрос: как выделить под такую матрицу память?
Если выделить массив указателей, а потом под каждую строку выделять память в цикле, то есть вероятность того, что строки матрицы будут разбросаны в памяти(если я все правильно понимаю), а мне нужно, чтобы матрица лежала как я сказал выше.Может я не правильно представляю себе размещение динамического массива в памяти?

P.S. спасибо всем, кто попытается помочь.
JuniorProger вне форума Ответить с цитированием
Старый 08.11.2011, 19:46   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
матрица должна лежать в смежных участках памяти (т.е. как бы последовательно).
можно уточнить, чем именно вызвана такая необходимость?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 08.11.2011, 19:53   #3
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Ну, можно выделить память под линейный массив N*N, а затем просто правильно рассчитывать индексы.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 09.11.2011, 12:24   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Syuf
Цитата:
а затем просто правильно рассчитывать индексы
можно даже не рассчитывать ничего
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 09.11.2011, 14:30   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

JuniorProger

матрица должна лежать в смежных участках памяти (т.е. как бы последовательно).

для этого необходимо выделить непрерывный участок памяти размером N * N * sizeof(тип элемента) + N * sizeof(указатель на элемент), после чего скорректировать значения указателей m[0]...m[N-1]
Rififi вне форума Ответить с цитированием
Старый 15.02.2012, 17:20   #6
JuniorProger
Форумчанин
 
Регистрация: 16.09.2011
Сообщений: 114
По умолчанию

Всем спасибо! Закрывайте.
JuniorProger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Обработка двумерного массива Happy001 Помощь студентам 1 04.03.2011 16:24
заполнения двумерного массива С++ Caнёk Помощь студентам 10 26.10.2010 17:24
[Delphi] создание и обработка двумерного массива screep Помощь студентам 5 16.06.2008 19:27