Like std::reverse_iterator, this points to one past the element being referenced. Therefore, for an array of size N starting at P, the begin iterator should be constructed at (P+N) and the end iterator should be constructed at P.