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 2105 C++98 要求 typename X::const_reverse_iterator
是值类型是 const T 的迭代器类型
要求它是值类型是
T 的常迭代器类型
close