![]() |
|
Модераторы: bsa |
![]()
|
|
| zim22 |
|
||||||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Код из книги перепечатал, который находит середину вектора.
Код не компилируется, я думаю опечатка, т.к. оператор / не определён для векторов. Надо так?
Если в пред.примере была опечатка, то это странно для меня, т.к. в двух местах книги сразу опечатки встречаются. Дальше идёт в книге упражнение: "Что случится, если вычислить итератор след.образом:"
Код, ясное дело не компилируется. Я думаю, что случилось бы следующее: т.к. v1.end() указывает на элемент, след.за последним, то итератор mid будет установлен не на средину контейнера, на на одну позицию правее средины. Прав ли я? И ещё не компилируется даже такой код:
Итераторы же поддерживают оператор + . Почему тогда код не работает? P.S. Я бы не обратил внимание на опечатки(всмысле исправил бы их), если бы была другая книга. Но это "С++ Primer" 4 издание. Издание книги русское. Опечатки редактора... ? %) А вдруг просто мой компилятор не поддерживает этот код... У меня Microsoft Visual Studio Professional Edition 2008 В общем, я в растерянности. Помогите. Это сообщение отредактировал(а) zim22 - 15.1.2009, 15:01 |
||||||||
|
|||||||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
zim22, итераторы по сути указатели. как и указатели, итераторы указывают на объекты. но применительно к итераторам речь идет об указании на один из элементов набора объектов, хранящихся в некоем контейнере.
в общем бери учебник по STL и кури его, а пепел вдохни. Это сообщение отредактировал(а) mrbrooks - 15.1.2009, 15:23 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
думаю что книга написана под какой то старый компилятор.
для исправления тебе помогут функции advance и distance. почитать о них можно например здесь : http://www.cplusplus.com/reference/std/ite...r/distance.html http://www.cplusplus.com/reference/std/iterator/advance.html В частности для вектора (random-access iterator) можно обойтись без advance :
Это сообщение отредактировал(а) mes - 15.1.2009, 15:20 |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
спасибо за ответы. stl буду курить, когда время прийдёт. а пока запомню полезную функцию distance.
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
zim22, складывать итераторы нельзя, так как результат не имеет смысла - что будет если сложить в почтовом адресе номера двух домов? Делить тоже. Опять же, представляем номер дома, деленный на два.
Для итераторов случайного доступа определен только оператор вычитание: если вычесть из одного итератора другой итератор, то получишь количество элементов, которое находится между ними. (Т.е. если вычесть из дома №10 дом №5, то получится, что между ними 5 домов) Так же можно прибавлять/вычитать к/из итераторам целые числа - это смещение итераторов на указанное число элементов. |
|||
|
||||
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: нет Всего: 2 |
А что за книга?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
lv151
http://www.ozon.ru/context/detail/id/2988768/ |
|||
|
||||
![]()
|
| Правила форума "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. |