Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Abstrakter Iterator из области С++

31.07.12 16:36
Re: Abstrakter Iterator из области С++
 
rahimov80 постоялец
в ответ ThorV 08.07.12 21:23, Последний раз изменено 31.07.12 16:38 (rahimov80)
В ответ на:
>>Задача итетатора - пройти по элементам списка.
Задача итератора - пройтись по ЛЮБОМУ контейнеру, включая вектор и массив

Это где вы такое определение видели? Вики говорит: "an iterator is an object that enables a programmer to traverse a container. "
В ответ на:
>>Ну тогда уж dinamic_cast, чтобы проверить на NULL :D
А если у класса нет виртуальных функций, то компилятор шлет такому dynamic_cast большой пианэрский привет
>>В любом случае, если не хочешь иметь дело с void *, то используй структуру классов. В чем проблема?
Извини конечно, но какого ...уя использовать малопривлекательное решение от Явы? Как быть со встроенными типами? Писать оболочки вокруг int/char/float?

Хотите задачу "из жизни". Есть контейнер, реализованный то ли как вектор, то ли лист. Он содержит пойнтеры на абстрактный CChannel, из который наследуется DVB-S Channel, DVB-T Channel, DVB-C Channel, etc (спутник, наземный сигнал, кабель, и т.д.)
По этому листу надо пройтись огромной кучей способов: последовательно от одного к другому, последовательно но пропустить не совпадающие каналы (для DVB-S должны совпадать bandwidth и поляризация - не суть важно), перепрыгнуть на величину графической страницы, перепрыгнуть но только на совпадающий канал, и т.д.
В этой задаче то, что предложил ТС и то что поддерживает "Программист" это то, что и нужно и ты не обойдешся здесь решениями из STL, и ни кто здесь не говорит об универсальном итераторе для встроенных типов, то есть "каждому овощу - свою корзину!"
 

Перейти на