A possibility is to use a template class for your container, with the private data-container as parameter. This way, the iterator can be defined in the class independent of the data-container.
I'm just not sure whether this is "unified" enough for what you need.