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())
リバースイテレータは実際にはフォワードイテレータであるため、すべてが有効です。
「逆イテレータ」はイテレータのカテゴリではありません。いくつかのイテレータカテゴリを覚えておいてください:
*)および増分(++)できるイテレーターは、順方向イテレーターです。+ランダムアクセスイテレータは、演算子も持つ双方向イテレータです-。一方、リバースイテレータは、コレクションを逆方向に見る双方向イテレータまたはランダムアクセスイテレータです。見る
http://www.cplusplus.com/reference/std/iterator/reverse_iterator/
...特に「メンバータイプ」の見出しの下にあるiterator_categoryについての説明。