![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| GriKo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.6.2003 Где: Израиль Репутация: нет Всего: нет |
Вот например в ПАСКАЛе, при объявлении массива, можно задать как верхнюю так и нижнюю границы. Ну например:
Мне нужно тоже самое от С (указать нижнюю границу массива). Разве можно только написать размер массива? |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Да. Но есть один способ использовать массивы как в паскале - написать свой класс с перегруженным оператором [] для такого массива. |
|||
|
||||
| GriKo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.6.2003 Где: Израиль Репутация: нет Всего: нет |
Source не подбросишь?
заранее благодарен |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Ну, я вообще никогда эти не пользовался. Но могу набросать:
Вот. Это простейщий вариант. Можно ещё добавить контроль выхода за границы массива и генерировать исключение. Пользоваться так: - чтоб создать твой массив MyArray<int> asd(20, 40); - доступ к элементам как обычно: asd[25] = 12; int x = asd[25]; |
|||
|
||||
| GriKo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.6.2003 Где: Израиль Репутация: нет Всего: нет |
ПАСИБО
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
GriKo, на сколько я помню, данная возможность в паскале изредка дает не приятный результат, а именно, конвертирование стринга в массив чара или наоборот, если не правильно объявить массив, то будет ошибка... так что я тебе советую использовать смещение, и не изобретать бомбу замедленного действия....
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
|
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Можно пояснить, что имелось ввиду в последнем сообщении
|
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Наверное имелось в виду, что тогда код будет выглядеть так:
Вообще-то весь вопрос из области извращенских, потому как не нумеруй первый элемент, хоть двадцатым, хоть сотым, физический он все равно будет первым в последовательности (сорри - нулевым |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Ну, я так и понял, но только тогда в enum не надо i20 инициализировать двадцаткой, надо так: [I]enum { i20 = 0, /*для надёжности, хотя можно опустить*/i21, ..........}[I]
У этого способа лишь один плюс - выражение dm[i20] раскрывается на этапе компиляции, но, по-моему, по крайней мере два недостатка, делающие этот способ весьма не гибким: - размерность массива должна быть известна при разработке проги (нельзя создавать динамические массивы) - придётся делать новый enum для другого массива с другими размерами (придётся придумать новые имена или определять namespace'ы) - а главное, если у меня в переменной i содержиться 20, то dm[i] даст совсем не то, что надо. Получается, что можно использовать только константы, а нафига тогда массив вообще. |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Я же говорю - извращение, свойственное всем людям, начинающим изучать язык.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |