![]() |
|
Модераторы: bsa |
![]()
|
|
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
При чем тут исключения по отношению к подобной записи ? В том примере использовался динамический массив строк постоянной длины. И ничего особенного от обычного синтаксиса массивов не имеет. Добавлено @ 18:34 т.е Вы утверждаете что что new int[n][20]; вернет массив, элементы которого расположены не линейно ?! Это сообщение отредактировал(а) mes - 4.6.2009, 18:35 |
|||
|
||||
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: 2 Всего: 3 |
Ну может именно с исключениями я конечно перебарщил, но проверку на корректное выделение памяти для каждой части массива провести необходимо.
Или я чего не понял, тогда поясни. Мне как-то приплюснутый вариант выделения через stl более по душе. Добавлено @ 18:39 Все допер.. Сорри. Добавлено @ 18:41 В твоем случае и в моем я ч-то не заметил разницы в смысле, а в синтаксисе огромная. Поясни почему сделал так. Если не сложно. Это сообщение отредактировал(а) fry - 8.6.2009, 00:05 |
|||
|
||||
| Santa12 |
|
|||
|
вечный чечако Профиль Группа: Участник Сообщений: 46 Регистрация: 20.5.2009 Репутация: нет Всего: нет |
Еще раз спасибо )
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Для того чтоб показать, что если в массиве только одно измерение динамическое, то можно для него выделить общий кусок памяти и соответственно элементы будут располагаться линейно. |
|||
|
||||
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: 2 Всего: 3 |
В целом, лично для меня, данный синтаксис имеет преимущество в виде возможности писать " [ i ][ j ] "
И недостатки: синтаксис ( ИМХО ИМХО ИМХО ИМХО ИМХО ИМХО ), статика одного измерения. Кстати подозреваю, что вычисление смещения по индексам будет темже (подозреваю). Рад за mes, что повесилил. Это сообщение отредактировал(а) fry - 4.6.2009, 18:56 |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Это следствие, так как наш массив объявлен многомерным Если быть точнее, то преимущество в том, что одно (но только одно) из измерений является динамическим. Добавлено через 7 минут и 39 секунд
Хотя длина строки и константна, но оптимизация умножения может быть возможно, только в случае констаного индекса строки. Т.е. обращение mas[n][m] требует одинаковых вычислений, mas[5][m] может быть лишен умножения, а mas[5][2] - заменен на линейный индекс. Это сообщение отредактировал(а) mes - 4.6.2009, 18:59 |
||||
|
|||||
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: 2 Всего: 3 |
Думаю ответ на вопрос какой вариант пользовать знает тот, кто знает что ему надо (и к чему он привык): "[ ][ ]" или менее напрягающий код объявления (это про два варианта объявления динамических массивов). Ну и конечно от ситуации зависит.
|
|||
|
||||
| fry |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: 2 Всего: 3 |
Понимаю, что тема закрыта, однако создавать по такой мелочевке тему не хочется, да и не надо.
к
Забавы ради и удовлетворения любопытства для провел тест на ОС Linux (Fedora 10) на линейные и нелинейные массивы, точнее скорости выделения и работы. Код теста (взят частично отсюда, переделан за неимением conio и vcl):
Выдает: Без оптимизации: Create On Pointers = 50000 Create solid = 0 Fill pointers = 900000 Fill solid = 920000 С оптимизацией: Create On Pointers = 40000 Create solid = 0 Fill pointers = 540000 Fill solid = 540000 ЗЫ ДАННЫЙ ПОСТ НЕ ИМЕЕТ ЦЕЛЬ ЧЕГО-ТО ДОКАЗАТЬ |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |