C++ named requirements: ReversibleContainer
A ReversibleContainer is a Container that has iterators that meet the requirements of either LegacyBidirectionalIterator or LegacyRandomAccessIterator. Such iterators allow a ReversibleContainer to be iterated over in reverse.
Требования
X | Тип контейнера |
T | Тип элемента |
a | Объекты типа X |
Типы
| Выражение | Возвращаемый тип | Условия |
|---|---|---|
X::reverse_iterator | Тип итератора, тип значения которого — T
|
reverse_iterator<iterator> |
X::const_reverse_iterator | Тип константного итератора, тип значения которого — T
|
reverse_iterator<const_iterator> |
Члены функций
| Выражение | Возвращаемый тип | Условия | Сложность |
|---|---|---|---|
a.rbegin() |
reverse_iterator; const_reverse_iterator для константного a
| reverse_iterator(end()) | Постоянная |
a.rend() |
reverse_iterator; const_reverse_iterator для константного a
| reverse_iterator(begin()) | Постоянная |
a.crbegin() | const_reverse_iterator | const_cast<X const&>(a).rbegin() | Постоянная |
a.crend() | const_reverse_iterator | const_cast<X const&>(a).rend() | Постоянная |
Стандартная библиотека
Пример
Следующий пример итерируется по vector (у которой итераторы произвольного доступа) в обратном порядке.
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v = {3, 1, 4, 1, 5, 9};
for (std::vector<int>::const_reverse_iterator i{v.crbegin()}; i != v.crend(); ++i)
std::cout << *i << ' ';
std::cout << '\n';
}Вывод:
9 5 1 4 1 3
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/ReversibleContainer