我需要以向后的顺序迭代一些元素,我正在使用:
for ( /* ... */ it = vec.end() - 1, end = vec.begin() ; it >= end ; --it ) {
// ...
我现在为某些容器定义end() - 1
,包括vector,但现在我需要知道是否还定义了开始递减。
我不知道是否可以使用reverse_iterator,因为我需要将这些迭代器作为参数传递给std :: vector :: erase,从文档中可以看出它们是不同的类型。
答案 0 :(得分:14)
是的,它未定义。
如果您想反向迭代元素,只需使用rbegin
和rend
。它们是反向迭代器,专门为此目的而设计。如果需要从反向迭代器获取标准迭代器,可以在迭代器上使用base
member function。
答案 1 :(得分:4)