Creating a custom container and iterator
The best way to understand how containers and iterators work is to experience them first-hand by creating your own. To avoid implementing something that already exists in the standard library, we will consider something different – more precisely, a circular buffer. This is a container that, when full, overwrites existing elements. We can think of different ways such a container could work; therefore, it’s important that we first define the requirements for it. These are as follows:
- The container should have a fixed capacity that is known at compile-time. Therefore, there would be no runtime memory management.
- The capacity is the number of elements the container can store, and the size is the number of elements it actually contains. When the size equals the capacity, we say the container is full.
- When the container is full, adding a new element will overwrite the oldest element in the container.
- Adding new elements...