Namespaces
Variants

C++ named requirements: ReversibleContainer

From cppreference.net
C++ named requirements

一个 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)
固定大小就地连续数组
(类模板)
双端队列
(类模板)
双向链表
(类模板)
可调整大小的连续数组
(类模板)
可调整大小、固定容量、就地连续数组
(类模板)
键值对集合,按键排序,键唯一
(类模板)
键值对集合,按键排序
(类模板)
唯一键集合,按键排序
(类模板)
键集合,按键排序
(类模板)

示例

以下示例以逆序遍历一个 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 的常量
迭代器类型