C++ 具名要求:可逆容器 (ReversibleContainer)
来自cppreference.com
可逆容器 (ReversibleContainer) 是拥有满足老式双向迭代器 (LegacyBidirectionalIterator) 或老式随机访问迭代器 (LegacyRandomAccessIterator) 要求的迭代器的容器 (Container) 。这些迭代器允许对可逆容器 (ReversibleContainer) 进行逆序迭代。
要求
X
|
容器类型 |
T
|
元素类型 |
a
|
X 类型对象
|
类型
表达式 | 返回类型 | 条件 | 复杂度 |
---|---|---|---|
X::reverse_iterator | 值类型为 T 的迭代器类型 |
reverse_iterator<iterator> | 编译时 |
X::const_reverse_iterator | 值类型为 T 的常迭代器类型 |
reverse_iterator<const_iterator> | 编译时 |
方法
表达式 | 返回类型 | 条件 | 复杂度 |
---|---|---|---|
a.rbegin() | reverse_iterator; 对常数 a 为 const_reverse_iterator |
reverse_iterator(end()) | 常数 |
a.rend() | reverse_iterator ; 对常数 a 为 const_reverse_iterator |
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 <vector> #include <iostream> int main() { std::vector<int> v = {3, 1, 4, 1, 5, 9}; for(std::vector<int>::reverse_iterator i = v.rbegin(); i != v.rend(); ++i) { std::cout << *i << '\n'; } }
输出:
9 5 1 4 1 3