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