Writing your own random access iterator
In Chapter 8, Learning Modern Core Language Features, we saw how we can enable range-based for loops for custom types by implementing iterators and 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 because it cannot be copy constructible or assigned and cannot be incremented. In this recipe, we will build upon that example and show 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 Enabling range...