begin()和end() 定义了一个半开区间 [ begin, end ), 因此叫做past-the-end。
这样设计的好处是:
1、避免了特殊处理空区间。当begin == end时,就是空区间。
如果end指向的是最后一个元素,而不是最后一个元素的下一个位置。那么在空区间里,begin和end的指向就成了问题。
2、循环中只要未到达end(),循环继续,提供了一个循环结束的标准。