C++ 具名要求:可逆容器 (ReversibleContainer)

来自cppreference.com
< cpp‎ | named req


 
 
C++ 具名要求
 

可逆容器 (ReversibleContainer) 是拥有满足老式双向迭代器 (LegacyBidirectionalIterator) 老式随机访问迭代器 (LegacyRandomAccessIterator) 的迭代器的容器 (Container) 。这些迭代器允许对可逆容器 (ReversibleContainer) 进行逆序迭代。

要求

一个类型满足可逆容器 (ReversibleContainer) 的条件是,它满足容器 (Container) ,它的迭代器类型属于双向或随机访问迭代器分类,并且给定以下类型和值,它也满足下方表格列出的语义和复杂度要求:

类型定义
X可逆容器 (ReversibleContainer) 类型
TXvalue_type
定义
aX 类型的值

类型

名字类型要求
typename X::reverse_iteratorstd::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_iteratorconst_cast<const X&>(a).rbegin()常数
a.crend()const_reverse_iteratorconst_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 2105C++98要求 typename X::const_reverse_iterator
是值类型是 const T 的迭代器类型
要求它是值类型是
T 的常迭代器类型