What is the past-the-end iterator in STL C++?

c++, stl

Solution

The functions `begin()` and `end()` define a half open range(`[begin, end)`), which means: The range includes first element but excludes the last element. Hence, the name past the end.

The advantage of an half open range is:

It avoids special handling for empty ranges. For empty ranges, `begin()` is equal to `end()` .

It makes the end criterion simple for loops that iterate over the elements: The loops simply continue as long as `end()` is not reached

Problem

Any one could explain me what is the meaning of `past-the-end`. Why we call `end()` function past-the-end?

Original source