8

使用reverse_iteratorwith合法std::equal吗?

例如,这些是否合法?

std::equal(v.begin(), v.end(), w.rbegin())

std::equal(v.rbegin(), v.rend(), w.begin())

std::equal(v.rbegin(), v.rend(), w.rbegin())
4

1 回答 1

9

所有都是有效的,因为反向迭代器实际上正向迭代器

“反向迭代器”不是迭代器类别。记住一些迭代器类别:

  • 可以取消引用 ( *) 和递增 ( ++) 的迭代器是前向迭代器。
  • 也可以递减的前向迭代器是双向迭代器。
  • 随机访问迭代器是一个双向迭代器,它也具有+-运算符。

另一方面,反向迭代器是双向迭代器或随机访问迭代器,它反向查看集合。看着

http://www.cplusplus.com/reference/std/iterator/reverse_iterator/

...尤其是它在“成员类型”标题下对 iterator_category 的说明。

于 2012-05-30T18:55:21.687 回答