![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Вопрос в том, какие требования нужны к классу, используемому в контейнерах, чтобы итератор мог с ним работать. Тоесть может быть, какие функции нужно определить в своем классе, чтобы работая с контейнерами, не вылетала ошибка.
к пример:
Я так понимаю в MyClass нужно перегрузить функцию operator== ? Хотелось бы знать точно, какие функции нужно перегрузить в классе MyClass. Ведь еще нужно использовать iter1++, iter1!= и т.д. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
На самом деле перегрузки всех операторов не нужно, чаще всего нужна перегрузка оператора присваивания и нужен конструктор копирования, остальные операторы зависят от того что используется и от типа контейнера. Например для map-а нужен оператор < либо класс функтор реализующий такое сравнение. Разные алгоритмы могут потребовать разных операторов, имеет смысл их вводить по мере надобности. Кстати мне кажется тут иная ошибка, потому что сравниваются не классы, а итераторы, т.е. указатели. Попробуйте заменить vec1::const_iterator iter1; на vec1::iterator iter1; -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Ой даже не так, итератор следует объявлять так.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
нужно инициализировать итераторы, если ты не инициализировал его ничем, то сработает assert, если хочешь, что-бы итератор никуда не указывал, присвой ему vec1.end();
Добавлено через 1 минуту и 59 секунд вообще, в vs assert сработает (в случае, если отладка итераторов включена), если итераторы указывают на элементы разных контейнеров |
||||
|
|||||
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Ясно. спасибо.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |