【发布时间】:2013-08-14 07:29:43
【问题描述】:
我需要以倒序遍历一些元素,我正在使用:
for ( /* ... */ it = vec.end() - 1, end = vec.begin() ; it >= end ; --it ) {
// ...
我现在为某些容器定义了end() - 1,包括vector,但现在我需要知道是否也定义了begin decrement。
编辑
我不知道是否可以使用 reverse_iterator,因为我需要将这些迭代器作为参数传递给 std::vector::erase 并且从文档中看,它们是不同的类型。
【问题讨论】:
-
是的,你为什么需要
begin() - 1? -
您可以改用
rbegin和rend。 -
你只能增加个不等于
end的迭代器,或者减少不等于begin的迭代器。完全对称的简单规则。 -
"我现在为某些容器定义了 end() - 1" 不,不是。仅在
begin() != end()时才定义。
标签: c++ stl iterator portability