|
0 / 0 / 1
Регистрация: 16.12.2006
Сообщений: 88
|
|
Как динамически обьявить многомерный массив (ptr = new int[5][5])?23.02.2008, 23:31. Показов 3234. Ответов 18
Метки нет (Все метки)
0
|
|
| 23.02.2008, 23:31 | |
|
Ответы с готовыми решениями:
18
Как создавать многомерный массив динамически из БД? Как обьявить массив в PROGMEM?
|
|
0 / 0 / 1
Регистрация: 16.12.2006
Сообщений: 88
|
||||||
| 24.02.2008, 00:58 [ТС] | ||||||
|
у меня пока только так получилось, но я не думаю что это самый правильный вариат...
0
|
||||||
|
Archie
|
||||||
| 28.02.2008, 14:57 | ||||||
|
Я правильно понял что проблема лишь в выделении памяти ??? Если так, то нет ничего проще.
|
||||||
|
0 / 0 / 1
Регистрация: 16.12.2006
Сообщений: 88
|
|
| 28.02.2008, 16:42 [ТС] | |
|
м да...
ты написал тоже самое что и я но намного длинее
0
|
|
|
Archie
|
|
| 28.02.2008, 18:18 | |
|
ты хотел сказать универсальнее
|
|
|
VVP
|
||||||
| 28.02.2008, 18:55 | ||||||
|
Можно обойтись одним new, взяв столько памяти, сколько нужно:
|
||||||
|
Archie
|
|
| 28.02.2008, 19:01 | |
|
Понятно, что написать функцию доступа к элементу одномерного массива и по трем индексам несложно для эмуляции 3-мерного массива, только зачем ?
|
|
|
VVP
|
|
| 28.02.2008, 19:13 | |
|
Вы сами поняли, чего сказали-то? Где вы видите 'функцию доступа к элементу'? В примере идет работа с ДВУМЕРНЫМ МАССИВОМ. И если вы правильно выделили память, то кому какое дело как вы объявили переменную? Между прочим, int ptr[a][b] эквивалентен int **ptr, за одним маленьким исключением: в первом объявлении в стеке или статически память выделяется компилятором, в моем примере память выделил я. Кстати по стандарту память в куче выделятся единым куском.
Читайте Страуструпа, блин!!! |
|
|
Archie
|
|
| 28.02.2008, 19:31 | |
|
2VVP
Лучше бы посоветовали что-нибуть мной еще непрочитанное. А по поводу стандарта С++ скажу следующее: компилятор VС++ (а также другие) на сегодняшний день не отражает даже стандарт августа 1998 года (начиная с import-директивы и заканчивая спецификацией на описание функций, генерирующих исключения). А вы не задумывались никогда почему мало-мальски большой проект с активным использованием шаблонов компилируется невыносимо долго ? Подумайте на досуге. И собственно не факт что программа, скомпилированная на VC++ выделит память так как вам понравится (с тем фактом что в вашем коде память выделится целым куском я не в коем случае не спорю, потому как именно так оно и будет). Из выше сказанного следует что тыкать книжкой Страустропа это конечно круто. |
|
|
VVP
|
|
| 28.02.2008, 19:41 | |
|
Ну так перечитайте, потому как NetMinion задал вопрос и сам на него криво попытался ответить, ему простительно. А вы написали действительно тоже самое, а теперь чего-то говорите про компилер, про невыносимо догую компиляцию. Вы на вопрос не смогли ответить.
|
|
|
0 / 0 / 1
Регистрация: 16.12.2006
Сообщений: 88
|
|
| 28.02.2008, 23:15 [ТС] | |
|
Большое спасибо за замечания и дополнения...
Согласен, что в моем примере, не хватает цикла и операторов удаления масива (универсальности) , я просто постарался упростить пример до максимума, чтобы более наглядно продемонстрировать сам процесс...Пример, с одним new очень интересный, обязательно им воспользуюсь... NetMinion
0
|
|
|
Snork
|
|
| 29.02.2008, 14:26 | |
|
Читайте Джефа Элджера. Официальное название книги не помню, неофициальное - 'C++: Путь гуру.' Там про многие интересные вещи написано, в т.ч. и про работу с многомерными массивами.
|
|
|
0 / 0 / 0
Регистрация: 26.02.2008
Сообщений: 8
|
||||||
| 01.03.2008, 19:06 | ||||||
|
А я делал так:
0
|
||||||
|
VVP
|
||||||
| 02.03.2008, 13:09 | ||||||
|
Господа, написавшие объявления массива через несколько циклов, на кой ляд вы это делаете? Да вы получите доступ к элементу через A[x][y]. Но во первых вы берете памяти на sizeof(int**)*Am байт больше чем нужно, под размещение массива указателей (A=new int*[Am]). Во вторых, специально для Archie, статья из MSDN, описывающая размещение памяти и индексацию многомерных массивов, кстати полностью соответствующая стандарту. В третьих, если уж вы настаиваете на раздельном размещении памяти, то присоветуйте человеку использовать vector и ВСЕ!!!
Итак, обещанная статья:
|
||||||
|
0 / 0 / 1
Регистрация: 16.12.2006
Сообщений: 88
|
|
| 02.03.2008, 15:08 [ТС] | |
|
м да, а вот это уже помоему высший пилотаж....
чето я както не особо разобрался в этом... скиньте пожалуйста ссылку на статью или еще что-то в этом роде... а то трудновато для понимания... Заранее благодарен NetMinion
0
|
|
|
Snork
|
|
| 02.03.2008, 18:30 | |
|
Ссылок тут в избытке. Рекомендую свою. Дам наводку помимо ссылки - операторы перегружаются так же, как и любые функции. В данном случае перегружается оператор []. Для смартеров нужно перегружать оператор ->. В этом нет ничего 'высшего'. А вот продуманная схема применения таких фич - это да, заслуживает уважения. Например, хорошо продуманная схема смартеров. Потому, как такой код обычно тщательно проектируется.
|
|
|
VVP
|
|
| 02.03.2008, 18:58 | |
|
Что такое 'смартеры'
|
|
|
Snork
|
|
| 02.03.2008, 19:37 | |
|
Smart-pointers.
|
|
|
Archie
|
|
| 03.03.2008, 17:35 | |
|
2VVP
за статью спасибо, так я это и имел ввиду когда говорил про функцию доступа к элементам такого массива, всегда приятно когда кто-то разбирается в вопросе детально |
|
| 03.03.2008, 17:35 | |
|
Помогаю со студенческими работами здесь
19
Как правильно обьявить массив обьектов? Как обьявить указатель на двумерный массив? Добавление массива в многомерный массив (не элемента в многомерный массив) Как обьявить и инициализировать массив константных значений?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|