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

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

Восстановить пароль Регистрация
 
 
Pro_ha
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 32
10.06.2013, 13:22     Как одномерный массив представить двумерным? #1
Я загрузил изображение. И есть указатель на его однобайтные пиксели: BYTE *pixels;
Пиксель [5,8] считываю так: pixels[5*Width+8];
А как сделать, чтоб pixels[5,8] ?

Пробую через другой указатель:
BYTE *array[Width][Height]=pixels;
Компилятор ругается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 13:22     Как одномерный массив представить двумерным?
Посмотрите здесь:

C++ Можно ли представить структуру как элемент массива, т е массив состоящий из однотипных структур
Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) C++
C++ Задача по двумерным массивам :) ( нечетные строки двумерного массива заменить на одномерный массив)
C++ Как представить массив состоящий из дробей ?
C++ ассоциативный массив map c двумерным массивом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
11.06.2014, 17:21     Как одномерный массив представить двумерным? #21
Цитата Сообщение от ValeryS Посмотреть сообщение
как например получить элемент 0,0 и сравнить его с 0,1?
А в чем проблема имея строку получить доступ к ее элементу?:

C
1
img_data_rows[0][0] == img_data_rows[0][1]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pro_ha
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 32
12.06.2014, 04:53  [ТС]     Как одномерный массив представить двумерным? #22
Цитата Сообщение от ValeryS Посмотреть сообщение
но я никак не могу представить как это сделать
Вот мой вариант (не проверял):
C++ (Qt)
1
2
3
4
5
6
7
8
BYTE ar1D[6]={1,2,3, 1,2,3}, **ar2D;
int width=3,height=2;
 
ar2D=new BYTE*[height];
for(int y=0;y<height;y++)ar2D[y]=&ar1D[y*width];
BYTE color=ar2D[1][2]; //<-- Чего и требовалось добиться.
 
delete ar2D; //<-- без []
Добавлено через 6 минут
Вот только не уверен на счет delete ar2D. Правильно ли удаляю массив указателей.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
12.06.2014, 05:21     Как одномерный массив представить двумерным? #23
Цитата Сообщение от Pro_ha Посмотреть сообщение
Правильно ли удаляю массив указателей.
удаление массива - delete [].
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2014, 07:03     Как одномерный массив представить двумерным?
Еще ссылки по теме:

Как сложить массив чтоб получился одномерный массив? C++
C++ Одномерный массив, подскажите как вывести, как просит в задании
C++ Как представить многомерный массив в одномерный?

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
12.06.2014, 07:03     Как одномерный массив представить двумерным? #24
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
А в чем проблема имея строку получить доступ к ее элементу?:
ни в чем
простоя ступил
Цитата Сообщение от Pro_ha Посмотреть сообщение
Вот мой вариант (не проверял):
а лучше проверить, а еще лучше проанализировать ассемблерные листинги
по моему мнению, в этом варианте мы теряем и в памяти ( лишняя память под массив указателей) и в скорости
( сначала идет выбор указателя потом по этому указателю рассчитывается ячейка)
и это вместо простого умножения
Yandex
Объявления
12.06.2014, 07:03     Как одномерный массив представить двумерным?
Ответ Создать тему
Опции темы

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