![]() |
|
Модераторы: bsa |
![]()
|
|
| 1122 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 24.10.2007 Репутация: -1 Всего: нет |
Подскажите пожалуйста. Как реазиловать класс "массив", куда нужно впихнуть:
1. все возможные конструкторы (все виды), 2. деструктор, 3. автоматическое выделение памяти и автоматическое расширение границ массива, 4. итератор (прямой и обратный)? Может кто-то делал похожие задачи или может подсказать... заранее примного благодарен. Добавлено через 3 минуты и 54 секунды Забыл сказать, что STL пользовать нельзя :( |
|||
|
||||
| 1122 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 24.10.2007 Репутация: -1 Всего: нет |
Вот что имею, вопрос по итераторам по прежнему актуален:
|
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
упс, был неправ
Это сообщение отредактировал(а) J0ker - 20.9.2008, 19:49 |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
добавьте
иначе константный массив не будет работать Добавлено @ 20:27 итератор должен содержать указатель на Array и текущий индекс (впринципе можно обойтись одним указателем, но тогда реаллокация массива будет приводить к инвалидизации итераторов) должен реализовывать инкременты и если нужно декременты и адресную арифметику должен имет операторы дереференс (*) и оператор доступа через указатель (->) должен иметь оператор == и != ну и консрукторы/присвоения Array можт реализовывать методы возвращающие итераторы Это сообщение отредактировал(а) J0ker - 20.9.2008, 20:33 |
|||
|
||||
| 1122 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 24.10.2007 Репутация: -1 Всего: нет |
J0ker, огромное спасибо.
Было бы замечтально, если приведете пример (например, прямой итератор). P.s. К сожалению, раньше никогда с ними не сталкивался... даже синтаксиса не знаю. |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
протейший итератор:
PS могут быть ошибки - писал прямо тут PPS по идее должно работать с ЛЮБЫМ - даже нэйтив - массивом упс, немного поправил Это сообщение отредактировал(а) J0ker - 20.9.2008, 21:36 |
|||
|
||||
| J0ker |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
в Array надо добавить методы:
по стандарту begin и end указывают на интервал как [begin, end) - т.е. end ужележит ЗА границами массива Итерация по массиву
Добавлено через 6 минут и 16 секунд чтобы было красиво -
можно убрать, а
заменить на
Тогда итератор вообще никак не связан с типом массива, кроме как по типу элементов |
||||||||||
|
|||||||||||
| 1122 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 24.10.2007 Репутация: -1 Всего: нет |
Возник глупый вопрос. А как пользовать итератор непосредственно в мэйне?
Вот код моего мейна для тестирования класса Array
Это сообщение отредактировал(а) 1122 - 21.9.2008, 19:47 |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
||||
|
||||
| 1122 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 24.10.2007 Репутация: -1 Всего: нет |
Программу собрал. Работает (были мелкие синтаксические незначительные ошибки). Спасибо. Был бы очень признателен, если бы дописали комментариев к каждой срочке, если, конечно, не сложно. Т.е. что есть что. Желательно доступным и понятным языком... как бы.. ээ.. для чайника. Заранее спасибою
|
||||||
|
|||||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
Это сообщение отредактировал(а) J0ker - 29.9.2008, 16:33 |
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 5 Всего: 32 |
Разыменование итераторов должно осуществляться константными функциями.
Следовало бы ещё константный тип итераторов добавить, и соответствующие begin, end, cbegin, cend в контейнере. |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
||||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
||||
|
||||
| 1122 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 24.10.2007 Репутация: -1 Всего: нет |
Спасибо.
|
|||
|
||||
![]()
|
| Правила форума "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. |