std ::与reverse_iterator相等

时间:2012-05-30 18:40:27

标签: c++ stl

reverse_iteratorstd::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())

1 个答案:

答案 0 :(得分:8)

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

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

  • 可以解除引用(*)并递增(++)的迭代器是一个前向迭代器。
  • 也可以递减的正向迭代器是双向迭代器。
  • 随机访问迭代器是一个双向迭代器,也有+-个运算符。

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

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

...尤其是关于“会员类型”标题下的iterator_category所说的内容。