того чтобы его можно было юзать для своего класса(не std-шного) мне нужно определить 2 метода begin и end, и для класса возвращаемого обьекта нужно перегрузить несколько операторов. Вопрос такой, стоит ли игра свеч? Парится так сильно из-за, грубо говоря, синтаксического сахара в виде for-range? Занимался ли кто-то таким? Какие предпосылки могут быть для такого? Мне на ум приходит только итерация по наследникам std::container полиморфно через указатель на инстанс того же std::container. Какие еще могут быть разумные причины для такого?
UPD: Прошу прощения за кросс-постинг...
Делал, потому что было интересно как это работает. Насколько помню, нужно только begin, end, звездочку и ++. Практического опыта у меня мало, поэтому не могу сказать про причины. Но имхо, мне кажется это не сложно сделать если пишешь что-то похожее на контейнер. P.S. Сорри если вообще не по теме пишу. Я не знаю о чем шла речь до этого (не все читаю).
1. Кмк, стоит, т.к. этот сахар упрощает код в большинстве случаев; Как хочешь, я вот свои древние велики из vc6.0 апнул для range-based-for'ов давно при миграции на 2013; Да; Влом писать длинный заголовок классичесвого фора или если есть итервторы, то range-based-for поможет; Реализация зависит от структуры данных, мне обычно в моих частных тешениях хватало возврата указателя
Это стандартный механизм итераторов, я хз как можно его не поддерживать
Обсуждают сегодня