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

Как реализовать двумерный динамический массив? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:02     Как реализовать двумерный динамический массив? #1
Доброго дня суток, форумчане! Подскажите пожалуйста, как реализовать двумерный динамический массив?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2013, 01:02     Как реализовать двумерный динамический массив?
Посмотрите здесь:

Как создать двумерный динамический массив C++
C++ Как создать динамический двумерный массив с использованием функции malloc?
C++ Как правильно записать двумерный динамический массив?
C++ Реализовать двумерный динамический треугольный массив. Количество строк и сами элементы вводит пользователь. Количество элементов в строке рассчитывае
Как заполнить двумерный динамический массив? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newyork7776
 Аватар для newyork7776
346 / 339 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 1
18.06.2013, 01:09     Как реализовать двумерный динамический массив? #2
C++
1
2
3
int** Mas = new int *[n];
    for (int i = 0; i < n; i++)
        Mas[i] = new int [m];
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:10  [ТС]     Как реализовать двумерный динамический массив? #3
newyork7776, я так понял, вы в массиве храните указатели на массив, так?
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
18.06.2013, 01:14     Как реализовать двумерный динамический массив? #4
Цитата Сообщение от beta-particle Посмотреть сообщение
newyork7776, я так понял, вы в массиве храните указатели на массив, так?
да
поскольку двумерных (многомерных) массивов в С нет, как например в Фортране
это получается массив массивов
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:17  [ТС]     Как реализовать двумерный динамический массив? #5
ValeryS, но я на плюсах пишу, не думал, что можно изощренно так решить проблему. Я просто изначально намеревался в двумерном виде представить.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
18.06.2013, 01:20     Как реализовать двумерный динамический массив? #6
Цитата Сообщение от beta-particle Посмотреть сообщение
ValeryS, но я на плюсах пишу,
А плюсы в этом смысле не далеко от С ушли
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:21  [ТС]     Как реализовать двумерный динамический массив? #7
ValeryS, по крайней мере, там двумерный массив определен.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
18.06.2013, 01:24     Как реализовать двумерный динамический массив? #8
Цитата Сообщение от beta-particle Посмотреть сообщение
Я просто изначально намеревался в двумерном виде представить.
Не получится данные не будут лежать в памяти рядом
можно создать квази двухмерный

C++
1
2
3
4
5
6
7
int a=5;
int b=10;
int* arr=new int[a*b]
// и обращатся так
for(int i=0; i<a;i++)
 for(int j=0;j<b;j++)
   arr[i*a+b]=0;
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:26  [ТС]     Как реализовать двумерный динамический массив? #9
ValeryS, интересная задумка, только не подскажите ли, как обращаться к элементам массива, прделоженного newyork7776-ом?
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
18.06.2013, 01:27     Как реализовать двумерный динамический массив? #10
Цитата Сообщение от beta-particle Посмотреть сообщение
ValeryS, по крайней мере, там двумерный массив определен.
серьезно
если ты можешь написать так
int a[2][3]
это еще не значит что это полноценный двумерный массив
в памяти он ляжет как одномерный из 6 элементов
а попробуй как в фортране поменять строчки местами (не копируя их вручную)
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:29  [ТС]     Как реализовать двумерный динамический массив? #11
ValeryS, с данным языком я не знаком.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
18.06.2013, 01:31     Как реализовать двумерный динамический массив? #12
Цитата Сообщение от ValeryS Посмотреть сообщение
а попробуй как в фортране поменять строчки местами (не копируя их вручную)
а как еще можно?
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
18.06.2013, 01:32     Как реализовать двумерный динамический массив? #13
Цитата Сообщение от beta-particle Посмотреть сообщение
ValeryS, интересная задумка, только не подскажите ли, как обращаться к элементам массива, прделоженного newyork7776-ом?
а к нему то как раз просто
C++
1
Mas[i][j]
с точки зрения обращения ты не заметишь разницу
но в отличии от статического массива ты не сможешь сделать так
C++
1
2
int arr[10][10]
arr[10][0]=5;
в статическом ты переходишь на следующую строчку
в массиве массивов выход за пределы со всеми его прелестями
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
18.06.2013, 01:33     Как реализовать двумерный динамический массив? #14
В паскале знаю так:
Pascal
1
2
3
4
var A: array [1..10, 1..10] of longint;
begin
A[2]:= A[1];
end.
Но это же тоже как-бы вручную.

Добавлено через 36 секунд
В плюсах можно swap_ranges
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
18.06.2013, 01:34     Как реализовать двумерный динамический массив? #15
Цитата Сообщение от Dani Посмотреть сообщение
а как еще можно?
в том то и дело что в фортране куча методов которые работают с массивами
а С(ну и плюсы) взял из него только организацию данных
однотипные данные которые лежат рядом
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
18.06.2013, 01:35     Как реализовать двумерный динамический массив? #16
Не понимаю, чем swap_ranges не такой же?
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
18.06.2013, 01:35     Как реализовать двумерный динамический массив? #17
Цитата Сообщение от Dani Посмотреть сообщение
Но это же тоже как-бы вручную.
но ведь не циклом же?
хотя ты это про паскаль
я на фортране давно не писал сейчас навскидку не помню но там куча методов именно для массивов

Цитата Сообщение от Dani Посмотреть сообщение
В плюсах можно swap_ranges
не знаком
можно поподробнее
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
18.06.2013, 01:36     Как реализовать двумерный динамический массив? #18
ValeryS, http://www.cplusplus.com/reference/a...m/swap_ranges/
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
18.06.2013, 01:45     Как реализовать двумерный динамический массив? #19
так на вскидку
Ввод и вывод массива
Fortran
1
2
READ(*,*) A,B 
WRITE(*,*) A,B
В Фортране можно, используя конструктор массива, задать одномерный
массив. Конструктор массива имеет вид:
(/ список-значений /)
функция SIZE возвращает размер массива
только не надо про sizeof
это только для статических
ну и там много чего еще
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2013, 01:47     Как реализовать двумерный динамический массив?
Еще ссылки по теме:

C++ Как создать двумерный динамический массив (принцип лото)?
Как выделить память под динамический двумерный массив C++
C++ Как сделать двумерный динамический массив на 4 столбца ?

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

Или воспользуйтесь поиском по форуму:
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
18.06.2013, 01:47     Как реализовать двумерный динамический массив? #20
Если уж ничего никому не хочется реализовывать, то можно взять vector, array.
Yandex
Объявления
18.06.2013, 01:47     Как реализовать двумерный динамический массив?
Ответ Создать тему
Опции темы

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