Chinaunix首页 | 论坛 | 博客
  • 博客访问: 501775
  • 博文数量: 174
  • 博客积分: 8001
  • 博客等级: 中将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-04 19:30
文章分类

全部博文(174)

文章存档

2011年(1)

2010年(24)

2009年(149)

我的朋友

分类: C/C++

2009-03-10 17:04:28

关于首类容器中常见的typedef,它们方便于对容器相关的类型进行声明,优点是可移植性高。
例如对于list来说,list::value_type i就表示存放的是int;当在一个平台上需要改为list的实现,不需要修改引用这个类型的源代码。
另一方面,对于typedef map mic 来说,使用
micp::value_type(i, str)事实上声明了该元素的变量,而且调用了构造函数。
也就是说micp::value_type可以视为一个class。

容器内部typedef的类型

value_type              容器中存放元素的类型
reference               容器中存放元素类型的引用
const_reference         容器中存放元素类型的常量引用
pointer                 容器中存放元素类型的指针
iterator                指向容器中存放元素类型的迭代器
const_iterator          容器中存放元素类型的常量迭代器
reverse_iterator        指向容器中存放元素类型的逆向迭代器
const_reverse_iterator  指向容器中存放元素类型的常量逆向迭代器
difference_type         引用相同容器的两个迭代器相减结果的类型
                     (list和关联容器没有定义operator-
size_type               用于计算容器中项目数和检索顺序容器的类型
                        (不能对list检索,就是[]对list是没有定义的。因为这个 运算符要随机迭代器支持)

key_type 关联容器的key的类型。

data_type pair关联容器的数据部分的类型


容器支持的迭代器类型体现了容器的抽象意义,决定了容器支持的算法和容器支持的操作。

容器支持的迭代器类型

顺序容器

vector 随机访问迭代器

deque 随机访问迭代器

list 双向迭代器

关联容器 双向迭代器

容器适配器 不支持迭代器


迭代器可以执行的操作,是迭代器抽象的体现。

迭代器操作

适用于所有迭代器

++p

p++

*p

p=p1

输入迭代器  输出迭代器

(从容器中读取) (输出到容器)

p==p1 \    /

p!=p1 \  /

  \    /

    \/ 

正向迭代器

    |

    |

双向迭代器

--p     |

p--     |

随机访问迭代器

p+=i-------|

p-=i    \

p+i    索引

p-i     /

p[i]-------|

p    \

p<=p1    不等式操作

p>p1    /

p>=p1------|


阅读(1523) | 评论(0) | 转发(0) |
0

上一篇:使用map的一个程序

下一篇:sgi STL 摘录

给主人留下些什么吧!~~