I need to iterate over some elements in backward order and I'm using:
for ( /* ... */ it = vec.end() - 1, end = vec.begin() ; it >= end ; --it ) {
// ...
I now that end() - 1
is defined for some containers, including vector, but now I need to know if begin decrement is also defined.
I don't know if I could use reverse_iterator, because I'll need to pass these iterators as parameters to std::vector::erase and from the documentation, it looks that they are different types.
Yes, it is undefined.
If you want to iterate over elements in reverse, just use rbegin
and rend
. They're reverse iterators, designed explicitly for this purpose. If you need to get a standard iterator from the reverse iterator, you can use the base
member function on the iterator.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.