![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Dov, это как раз одна из тех конструкций итерации, о которой говорил Riffi
Dov, а на основе этих строчек как теперь с примером? чтоб функция ничего не знала о массиве и получала только его кусок )) Это сообщение отредактировал(а) mes - 18.5.2008, 14:46 |
||||
|
|||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
mes, практически любая функция должна знать размер массива, переданный, как параметр или, как глобальная переменная или каким-то другим путём. Иначе функция не сможет правильно работать с этим массивом. А вообще, неплохо было бы взглянуть на эту функцию.. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
дело в том что функция составлена для одного типа массива, а автор топика хочет применить к другому.. В том виде в каком автор описал, задача решения в лоб не имеет. Для обходного решения подходы в теме озвучены, но для более точного примера требуется более детальное представление о текущей задаче. Например непонятно всегда ли куски массива будут вырезаться из одного измерения или нет, а также доподлино неизвестана возможность перепроектировки функции. Так что без дальнейшей информации, Это сообщение отредактировал(а) mes - 18.5.2008, 14:48 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| dizzy1984 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Существует 2 варианта решения проблемы : 1. Переписывается тело функции так, чтобы она реализовывала логику выборки непоследовательно расположенных в памяти элементов исходного массива. 2. Для каждого вызова функции создается отдельный массив с линейным расположением элементов. Я бы посоветовал первый.
Dov имеет в виду динамический массив с последовательным расположением элементов. Для него, действительно, будет так же. Она не линейна у топикстартера, у Dov'а она линейна.
Где создается массив у mes я тоже не вкурил. Видимо, это простая невнимательность и имеется в виду chaoss. А на счет стандарта, это по-моему, через чур. Есть конкретный пример компилятора для которого такой массив будет нелинейным? Такой компилятор необходим топистартеру? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
у меня массив не создается никто не спорит что весь массив линейный или нет.. рассматривается только избранная его часть, определенная в начале теме. под словом линейно подразумевается также, что эллементы массива располагаются непосредстевенно друг за другом и можно пройти массив посредством ++ итерации, чего не может предоставить часть массива A[m][...][n] (как минимум нужно передавать шаг итерации), а именно ее хочет передать автор в функцию.. Это сообщение отредактировал(а) mes - 19.5.2008, 15:12 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Это сообщение отредактировал(а) math64 - 19.5.2008, 14:50 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
math64, уж легче boost::array взять, чем своё городить, нет?
|
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Ну значит мы по-разному поняли тему спора. Прочитав ответ от 18.5.2008, 03:30, где приводится цитата ответа MAKCim, я пришел к выводу что защищается его версия, в которой понятие "динамический" стало синонимом "непоследовательный в памяти", что не всегда верно. Пока решения такие : Rififi предложил переписать функцию Dov предложил переписать функцию и изменить представление данных math64 предложил переписать функцию и изменить представление данных |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Непоследовательный в памяти динамический многомерный массив, а в приведенном приммере у Dov динамическая часть массива одномерна. math64 без слов и споров сделал всю черную работу по представлению 3х-мерного массива линианизированным по любому измерению. Респект. ИМХО остальные предложения сводятся к одной из модификаций такого решения . |
|||
|
||||
| rrrFer |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 1 Всего: 1 |
что за шаманство?
непонятно зачем в прогонке трехмерный массив? если я правильно помню, то прогонка - это метод с трехдиагональной матрицей...трехдиагональная она не потому что трехмерная, а потому что у нее на диагонали и в соседних с диагональю клеточках не нули, тоесть как бы три дагонали когда то я делал эти лабы, но они у меня не проименованы, тоесть есть программы, а какая что выполняет я уже не помню, ну так глянул, возможно это программа которая тебе нужна:
ну конечно вполне может быть, что в этой программе есть ошибки, потому что помнится правил я их прям когда сдавал... ------ и насчет:
я думаю что УКАЗАТЕЛЬ надо передавать все же на его начало, и вместе с указателем передавать переменные, отвечающие за то - какую часть массива надо использовать. Думаю делать надо именно так хотя бы для улудшения читабельности. Это сообщение отредактировал(а) rrrFer - 20.5.2008, 12:49 |
||||||||
|
|||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
JackYF,
boost::multi_array |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Да, именно. Точное название лень было смотреть |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |