使用reverse_iterator
with合法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())
所有都是有效的,因为反向迭代器实际上是正向迭代器。
“反向迭代器”不是迭代器类别。记住一些迭代器类别:
*
) 和递增 ( ++
) 的迭代器是前向迭代器。+
和-
运算符。另一方面,反向迭代器是双向迭代器或随机访问迭代器,它反向查看集合。看着
http://www.cplusplus.com/reference/std/iterator/reverse_iterator/
...尤其是它在“成员类型”标题下对 iterator_category 的说明。