Comments 16
По поводу полевого итератора:
чем же вам не угодила такая конструкция С++, как указатель на поле?
#define fieldof(Object,field) (&Object::field)
чем же вам не угодила такая конструкция С++, как указатель на поле?
#define fieldof(Object,field) (&Object::field)
Ни разу не использовал указатель на поле на практике) Потому получился костыль. Спасибо, сейчас впишу в статью.
Есть же стандартный макрос для сего дела: offsetof (http://www.cplusplus.com/reference/clibrary/cstddef/offsetof/).
Делает тоже самое кстати. Но не хочется плодить лишние сущьности )
Делает тоже самое кстати. Но не хочется плодить лишние сущьности )
На мой взгляд, в таблице упущена одна из самых важных особенностей Forward Iterators, которая выгодно отличает их от Input/Output Iterators — возможность повторного прохода! На этом стоит поставить акцент.
Кроме того, весьма удивлен положению пункта «Может быть создан без параметров». Для Input/Output Iterators это тоже справедливо, ведь именно так и создается итератор, указывающий на конец абстрактной последовательности данных.
Кроме того, весьма удивлен положению пункта «Может быть создан без параметров». Для Input/Output Iterators это тоже справедливо, ведь именно так и создается итератор, указывающий на конец абстрактной последовательности данных.
Любителям итераторов рекомендую Александреску:
www.informit.com/articles/printerfriendly.aspx?p=1407357
совсем другой подход.
www.informit.com/articles/printerfriendly.aspx?p=1407357
совсем другой подход.
Я уже проникся Range-ами Александреску) Об этом отдельную статью возможно напишу. Понравилась его презентация «Iterators Must Go».
Да, хорошая презентация. Вот ссылка для желающих www.slideshare.net/rawwell/iteratorsmustgo
Чтобы не описывать в реализации кучу однотипных операций (типа +=, +, []), в качестве указанного декоратора удобно использовать boost::iterator_adaptor. Он все такие функции определяет через примитивные операции типа increment/decrement/advance etc.
Sign up to leave a comment.
Недооценённые итераторы