Writing your own random-access iterator
In the first chapter, we saw how we can enable range-based for loops for custom types by implementing iterators, as well as free begin()
and end()
functions to return iterators to the first and one-past-the-last element of the custom range. You might have noticed that the minimal iterator implementation that we provided in that recipe does not meet the requirements for a standard iterator. This is because it cannot be copy constructible or assigned and cannot be incremented. In this recipe, we will build upon that example and show you how to create a random-access iterator that meets all requirements.
Getting ready
For this recipe, you should know the types of iterators the standard defines and how they are different. A good overview of their requirements is available at http://www.cplusplus.com/reference/iterator/.
To exemplify how to write a random-access iterator, we will consider a variant of the dummy_array
class used in the...