Чтобы испортить, используйте прямые указатели много. Вместо этого используйте RAII для почти чего-либо, удостоверяясь, конечно, что Вы используете правильные интеллектуальные указатели. Если Вы пишете, "удаляют" где угодно вне дескриптора или класса типа указателя, Вы очень вероятно делаете его неправильно.
Николай Йосуттис приводит пример определяемого пользователем итератора в своей книге: Стандартная библиотека C ++, учебное пособие и справочник.
Вот пример в Интернете:
http: // www. josuttis.com/libbook/iter/assoiter.hpp http://www.josuttis. com / libbook / iter / assoiter.cpp
Здесь вы можете найти хорошее введение для создания собственных итераторов. Также посмотрите библиотеку Boost.Iterator .
Я нашел «расширенный STL» Мэтью Уилсона очень поучительным по этому вопросу. Содержит множество советов, которые можно и что нельзя делать, а также множество практических советов по программированию. Я думаю, этот парень действительно знает, что делает. (для этого тоже созданы библиотеки)