
Hello, I have a situation which is probably quite common and already addressed by boost. So rather than write it my self, maybe someone can point me to the answer. I've got a geometry class that needs to expose iterators for the underling vertex components. Example: Class Vertex { positions_iterator PositionsBegin(); positions_iterator PositionsEnd(); normals_iterator NormalsBegin(); normals _iterator NormalsEnd(); ... } The first problem is depending on the format of the underling vertices, the stride between the data elements will change. Is there some easy way to implement this? I think writing my own using the boost::iterator_adapter is probably the way to go. Second problem is more involved. The texture data not only has a stride but a variable number of elements. Some vertices have 2 texture coordinates, some 3, some even more. Id love to define this iterator like this: stride_iterator< pair<float_iterator, float_iterator> > tex_coord_iterator; then create the iterator: stride_tupel_iterator< pair<float_iterator, float_iterator> >( pFirstTexCoord, texCoordStride, texCoordCount ); then use it: stride_tupel_iterator< pair<float_iterator, float_iterator> > it; for( it = vertex.PositionBegin() ; it != vertex.PositionEnd() ; ++it) { pair<float_iterator, float_iterator> coords; float_iterator iCoord; for(iCoord = coords.first ; iCoord != coords.last ; ++iCoord) { } } This will probably also require me to create my own highly special iterator class or is there a better way.