Advantages of off-the-end pointers
They make it much easier to represent and detect an empty sequence
- Otherwise, the end pointer might be less than the begin pointer
- If there are no elements, we'll need a pointer that doesn't point to an element anyway
They provide a convenient error return