boost iterator provides a framework to create stl-compliant iterators and to adapt existing ones.
It allows you to focus on the functionality and generates all necessary traits, typedefs for you.
iterator
and const_iterator
creation without much code-duplication is supported as well.