Builder 6.0, Итераторы |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Builder 6.0, Итераторы |
Fanat |
22.01.2008 21:09
Сообщение
#1
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
Как перегрузить opertor+ для итератора list<MyClass>::iterator?..
То есть хочу чтобы работал следующий код
Сделать перегрузку тривиально, но где это записать и как етим правильно пользоваться?.. |
volvo |
22.01.2008 21:38
Сообщение
#2
|
Гость |
Ну, ладно еще перегрузка операции для итератора, но почему list? У него же нет рандомного доступа... У vector-а есть... Вот смотри:
// Ну, перегрузка тривиальна - сам говоришь...Все-таки тебе либо не нужен list (точнее, нужен НЕ list), либо не надо перегружать подобным образом его итератор... |
Fanat |
22.01.2008 21:53
Сообщение
#3
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
Мне нужно реализовать класс-обёртку для листа...и среди функций этого класса есть вставка элемента в задданое место и удаление элемента с заданного места...и это место задаётся индексом...а для этого мне кажется необходимо сдвинуть итератор на заданный индекс...Может я в чем то ошибаюсь?..или это можно сделать легче?..
|
volvo |
22.01.2008 23:17
Сообщение
#4
|
Гость |
Тогда тебе проще будет сделать обычный
...(тестировалось на том же списке целых), не перегружая операторы сложения для итераторов... |
Fanat |
22.01.2008 23:23
Сообщение
#5
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
Тогда тебе проще будет сделать обычный ...(тестировалось на том же списке целых), не перегружая операторы сложения для итераторов... Ну да...я тоже подобное писал...но потом вспомнил что желательно выделять одинаковые куски кода...ведь сдвиг итератора понадобится не только в этой функции...ну да ладно вроде таких всего 2... Добавлено через 4 мин. Кстати при написании обёртки мой класс должен содержать внутри себя list?.. |
volvo |
22.01.2008 23:38
Сообщение
#6
|
Гость |
Так лучше: class TMyList: public list<int>? |
Fanat |
22.01.2008 23:44
Сообщение
#7
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
Мне кажется так лучше...
(Значит класс должен наследоваться от list?.. |
volvo |
23.01.2008 0:01
Сообщение
#8
|
Гость |
В принципе - да, ты же делаешь обертку, то есть сохраняешь функциональность List-а и добавляешь свое, значит твой новый класс является некоторым видом списка, так? Это реализуется наследованием...
|
Fanat |
23.01.2008 0:12
Сообщение
#9
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
В принципе - да, ты же делаешь обертку, то есть сохраняешь функциональность List-а и добавляешь свое, значит твой новый класс является некоторым видом списка, так? Это реализуется наследованием... В задании даны функции вида добавить элемент в конец, очистить, и дан список операций над списком... наверно имеется ввиду всё таки не сохранять всю функциональность list...ведь это можно добиться и агрегированием мне кажется... И ещё
|
volvo |
23.01.2008 0:24
Сообщение
#10
|
Гость |
Цитата ведь это можно добиться и агрегированием мне кажется А какая разница, дан тебе список операций или нет? Ну, сделаешь ты агрегированием, и что изменится? Разве что запретишь обращаться извне к тому или иному методу... Ну, как знаешь - тебе виднее, задание у тебя все-таки Цитата // А что означает здесь &? То есть, что означает & внутри скобок у тебя вопроса не возникло, а снаружи - непонятно? На самом деле - в обоих местах это означает одно и то же, возвращается ссылка на итератор, а не сам итератор. |
Fanat |
23.01.2008 0:32
Сообщение
#11
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
То есть, что означает & внутри скобок у тебя вопроса не возникло, а снаружи - непонятно? На самом деле - в обоих местах это означает одно и то же, возвращается ссылка на итератор, а не сам итератор. Ну снаружи достаточно сложно понять где класс а где тип возвращаемого значения...? Вот в этой конструкции
Добавлено через 3 мин. Ну снаружи достаточно сложно понять где класс а где тип возвращаемого значения...? Вот в этой конструкции
Всё понял...тут просто обьявляется дружественная функция...Спасибо... Сообщение отредактировано: Fanat - 23.01.2008 0:34 |
volvo |
23.01.2008 0:40
Сообщение
#12
|
Гость |
Не понял... Что сложного? Ссылка на итератор шаблонного класса list, хранящего указатели на ILXListItem... Вас что, не учили правилу "право-лево" для разбора сложных конструкций?
|
Fanat |
23.01.2008 0:41
Сообщение
#13
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
|
Текстовая версия | 27.04.2024 19:45 |