将reverse_iterator
与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())
答案 0 :(得分:8)
所有都有效,因为反向迭代器 ,实际上是转发迭代器。
“反向迭代器”不是迭代器类别。 记住一些迭代器类别:
*
)并递增(++
)的迭代器是一个前向迭代器。+
和-
个运算符。另一方面,反向迭代器是一个双向迭代器或一个反向查看集合的随机访问迭代器。看看
http://www.cplusplus.com/reference/std/iterator/reverse_iterator/
...尤其是关于“会员类型”标题下的iterator_category所说的内容。