随笔 - 46  文章 - 39  trackbacks - 0
<2012年3月>
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(2)

随笔分类

随笔档案

友情链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜

可逆容器(Reversible Container)

类目:容器


描述

可逆容器是一个有双向迭代器的前向容器。它可以向后向后迭代通过容器。

改善自

Forward Container

相关类型

介绍了两个新的类型。此外,迭代器类型和常量迭代器类型必须满足比前向容器(Forward Container)更严格的要求。迭代器类型和反向迭代器类型必须是双向迭代器(Bidirectional Iterators),而不仅仅是前向迭代器(ForWard Iterators)。

反向迭代器类型(Reverse iterator type)            X::reverse_iterator    一个反向迭代器适配器的基迭代器类型是容器的迭代器类型。递增反向迭代器(rever_iterator)类型对象向后移动通过容器:Reverse Iterator适配器映射了++操作符和--操作符。
常量反向迭代器类型(Const reverse iterator type)  X::const_reverse_iterator  一个反向迭代器适配器的基迭代器是容器的常量迭代器类型。[1]

标记法

X    反向容器模式类型
a,b  类型X对象

定义

有效表达式

除了前向容器(Forward Container)中的表达式外,下面的表达式也必须有效
名称                      表达式     类型要求   返回类型
范围起始Beginning of range a.rbegin()           如果a是可变的,那么是reverse_iterator,否则为const_reverse_iterator[1]
范围结束End of range       a.rend()             如果a是可变的,那么是reverse_iterator,否则为const_reverse_iterator[1]

表达式语义

一个表达式的语义只有在这种情况下定义,当它没有在前向容器(Forward Container)中定义,或者有额外的信息。
名称                      表达式 前提     语义                                后置
逆向范围起始Beginning of range a.rbegin()    相当于X::reverse_iterator(a.end())。 a.rbegin()是提领或者是past-the-end。当a.size() == 0是,它为past-the-end。
逆向范围结束End of reverse range a.rend()    相当于X::reverse_iterator(a.begin())。 a.rend()是past-the-end。

复杂性保证

rbegin()和rend()运行时复杂性是摊销时间为常数。

不变因素

有效范围          [a.rbegin(), a.rend())是一个有效范围。
等待范围          a.begin()到a.end()之间的距离和a.rbegin()到a.rend()之间的距离是一样的。

模型

vector
list
deque

注释

[1]一个容器的迭代器类型和常量迭代器类型有可能是相同的类型:一个容器不需要提供可变的迭代器。因此反向迭代器类型和常量反向迭代器类型也可能是相同的。

参见

Iterator overview, Bidirectional Iterator, Sequence

           
posted on 2012-03-21 16:07 canaan 阅读(1282) 评论(1)  编辑 收藏 引用 所属分类: 外文翻译

FeedBack:
# re: 标准模板库(STL)三 《可逆容器(Reversible Container)》 2012-03-21 23:33 kijl000
mark.这个有用  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理