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

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

Войти
Регистрация
Восстановить пароль
 
 
Pro_ha
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 32
#1

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

10.06.2013, 13:22. Просмотров 987. Ответов 23
Метки нет (Все метки)

Я загрузил изображение. И есть указатель на его однобайтные пиксели: 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 двумерным массивом
Как сложить массив чтоб получился одномерный массив? C++
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++ Как упорядочить одномерный массив по возрастанию?
C++ Как перевернуть одномерный массив?
Двумерным массив C++

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

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

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