C++ named requirements: ReversibleContainer
一个 ReversibleContainer 是一种 Container ,其迭代器满足 LegacyBidirectionalIterator 或 LegacyRandomAccessIterator 的要求。此类迭代器使得 ReversibleContainer 能够被反向遍历。
目录 |
要求
一个类型满足 可逆容器 的要求,当且仅当它满足 容器 的要求,其迭代器类型属于双向或随机访问 迭代器类别 ,并且给定以下类型和值时,满足下表中的语义和复杂度要求:
| 类型 | 定义 |
X
|
一个 ReversibleContainer 类型 |
T
|
X
的
value_type
|
| 值 | 定义 |
| a |
类型为
X
的值
|
类型
| 名称 | 类型 | 要求 |
|---|---|---|
| typename X :: reverse_iterator | std:: reverse_iterator < X :: iterator > |
其
值类型
为
T
的迭代器类型
|
| typename X :: const_reverse_iterator | std:: reverse_iterator < X :: const_iterator > |
其
值类型
为
T
的常量迭代器类型
|
表达式
下表类型
reverse_iterator
与
const_reverse_iterator
分别表示
typename
X
::
reverse_iterator
和
typename
X
::
const_reverse_iterator
。
| 表达式 | 类型 | 语义 | 复杂度 |
|---|---|---|---|
| a. rbegin ( ) |
reverse_iterator
const_reverse_iterator
用于常量
a
|
reverse_iterator ( a. end ( ) ) | 常数 |
| a. rend ( ) |
reverse_iterator
const_reverse_iterator
用于常量
a
|
reverse_iterator ( a. begin ( ) ) | 常数 |
| a. crbegin ( ) |
const_reverse_iterator
|
const_cast < const X & > ( a ) . rbegin ( ) | 常数 |
| a. crend ( ) |
const_reverse_iterator
|
const_cast < const X & > ( a ) . rend ( ) | 常数 |
库类型
以下标准库类型满足 ReversibleContainer 要求:
|
(C++11)
|
固定大小就地连续数组
(类模板) |
|
双端队列
(类模板) |
|
|
双向链表
(类模板) |
|
|
可调整大小的连续数组
(类模板) |
|
|
(C++26)
|
可调整大小、固定容量、就地连续数组
(类模板) |
|
键值对集合,按键排序,键唯一
(类模板) |
|
|
键值对集合,按键排序
(类模板) |
|
|
唯一键集合,按键排序
(类模板) |
|
|
键集合,按键排序
(类模板) |
示例
以下示例以逆序遍历一个 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
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 应用于 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 2105 | C++98 |
typename
X
::
const_reverse_iterator
被
要求是值类型为 const T 的迭代器类型 |
要求是值类型为
T
的常量
迭代器类型 |