std ::与reverse_iterator相等

Tho*_*ing 5 c++ stl

使用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())
Run Code Online (Sandbox Code Playgroud)

wol*_*ang 8

所有的都是有效的,因为反向迭代,事实上,前向迭代器.

"反向迭代器"不是迭代器类别.记住一些迭代器类别:

  • 可以是dereferenced(*)和incrementmented(++)的迭代器是一个前向迭代器.
  • 也可以递减的前向迭代器是双向迭代器.
  • 随机访问迭代器是一个双向迭代器,它也有+-运算符.

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

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

...尤其是"成员类型"标题下的iterator_category所说的内容.