я хочу создать свой итератор вместе с begin() end(). Зачем свой? чтоб он фильтровал нужные согласно логике. Я на правильном пути? так вообще делают? если делают то как лучше? наследоваться от vector<T>::iterator ?
Там по идее нет виртуальных методов. Я бы сделал свой класс итератора с operator++() и operator *()
а с другой стороны зачем виртуальный? я не собирался его кастовать к векторовскому итератору.
Нет причин не делать так.
Виртуальный, не виртуальный - в данном случае без разницы.
объясните, сеньер, почему?, возьмем кейс for(const auto& v : myObj) {}
хотите сказать @MasterZiv тут итератор кастуется к векторовскому?
где я такое говорил ? что за ерунда?
Итераторы твоего класса и итераторы инкапсулированного вектора будут никак не связаны друг с другом. И твой класс тоже не будет связан никак (может будет являться наследником, но не важно). Поэтому виртуальность методов никак не играет тут
т.е. наследоваться от vector<T>::iterator приемлемый путь, спасибо
не так понял вашу мысль
Наследоваться от вектора или просто его инкапсулировать - для твоей задачи не имеет значения. Надо тебе чтобы торчал наружу интерфейс vector - наследуйся. Не надо - инкапсулируй (или наследуйся private)
да интерфейс вектора вовсе не нужен, нужна только возможность итерироваться над внутренним контейнером, причем отфильтровывая.
Тогда наследоваться смысла нет,
Обсуждают сегодня