命名空间
变体
操作

C++ 命名要求: ReversibleContainer

来自 cppreference.cn
 
 
C++ 命名要求
基本
类型属性
全库范围




Container(容器)
ReversibleContainer(可逆容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
随机数
并发
(C++11)
Ranges
多维视图
其他

 

一个 ReversibleContainer 是一个 Container,其迭代器满足 LegacyBidirectionalIteratorLegacyRandomAccessIterator 的要求。这类迭代器允许 ReversibleContainer 进行反向迭代。

目录

[编辑] 要求

如果一个类型满足 Container,且其迭代器类型属于双向或随机访问 迭代器类别,并且给定以下类型和值,满足下表中的语义和复杂度要求,则该类型满足 ReversibleContainer 的要求

类型 定义
X 一个 ReversibleContainer 类型
T Xvalue_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_iteratorconst_reverse_iterator 类型分别表示 typename X::reverse_iteratortypename X::const_reverse_iterator

表达式 类型 语义  复杂度 
a.rbegin() reverse_iterator
对于常量 aconst_reverse_iterator
reverse_iterator(a.end()) 常量
a.rend() reverse_iterator
对于常量 aconst_reverse_iterator
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 的常量
迭代器类型