- iterator[meta header]
- std[meta namespace]
- class template[meta id-type]
namespace std {
template <class Iterator>
class reverse_iterator
: public iterator<typename iterator_traits<Iterator>::iterator_category,
typename iterator_traits<Iterator>::value_type,
typename iterator_traits<Iterator>::difference_type,
typename iterator_traits<Iterator>::pointer,
typename iterator_traits<Iterator>::reference>;
}
- iterator[link /reference/iterator/iterator.md]
- iterator_traits[link /reference/iterator/iterator_traits.md]
reverse_iteratorは、イテレータを、逆方向に進むイテレータとしてラップするイテレータアダプタである。
endイテレータをreverse_iteratorでラップした場合、end - 1 (つまり終端要素)を指し、begin - 1のイテレータを終端値としてみなす。
テンプレートパラメータIteratorは、双方向イテレータの要件を満たすこと。ランダムアクセスイテレータであることを必要とする横断操作を使用する場合は、ランダムアクセスイテレータの要件を満たすこと。
| 変数名 |
型 |
対応バージョン |
current |
Iterator |
|
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
int main()
{
std::vector<int> v = {1, 2, 3, 4, 5};
// 逆順に走査する
std::reverse_iterator<decltype(v)::iterator> first(v.end());
std::reverse_iterator<decltype(v)::iterator> last(v.begin());
std::for_each(first, last, [](int x) {
std::cout << x << std::endl;
});
}
- std::reverse_iterator[color ff0000]