If v is an object of type vector<int>, then
v.rbegin()==vector<int>::reverse_iterator(v.end()) &&
v.rend() ==vector<int>::reverse_iterator(v.begin()) &&
v.begin() ==v.rend().base() &&
v.end() ==v.rbegin().base()
Notice the base() calls to adjust the iterators as shown in the following diagram:
begin() end()
|Logical |Logical
|Physical |Physical
V V
x 0 1 2 y
^ ^ ^ ^
|Logical |Physical |Logical |Physical
| | | |
rend() rend() rbegin() rbegin()
Reference: The C++ Standard Library: A Tutorial and Reference
by Nicolai M. Josuttis. Addison-Wesley, 1999, p. 269.
Friday, July 16, 2010
Reverse Iterators
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment