《C++标准库》笔记--STL 2

关联容器,根据元素的值或是元素的键值,来自动排列他的元素。关联容器是以二叉树形式组织起来的。这几种关联容器之间的区别在于元素的种类,以及处理副本的方式。排列的默认操作是"<",你也可以重载它。判断相等的方式是若两个元素之间都不小于对方,则认定相等。所有关联容器的实现方式都是基于同一种对二叉树的实现,因此可以认为set是键值和值相等的map。

这四种关联容器的粗略特点:

Sets:比较的是值,不允许重复的元素;

Multisets:比较的是值,允许重复的元素;

Map:比较的是键值,不允许重复的键值;

Multimaps:比较的是键值,允许重复的键值。

特殊容器,或者说是基本容器的变种(container adapters),包括栈、队列和优先级队列等。

迭代器的是每一类容器都定义的嵌套类,因此从接口上来看,所有的迭代器行为是一致的。所有的容器都提供了相应的成员函数,如begin()、end(),使得迭代器能够操纵容器的元素。Begin()指向容器的第一个元素,end()指向最后一个元素后面的位置,二者形成了一个开闭区间。这样的好处是很容易判断空容器:begin == end,另一个好处是遍历容器内元素也很容易。迭代器有两种iterator与const_iterator,区别是前者可读可写,后者只读。

++i与i++之间应当通常选择++i,因为前者更加高效。不过我过去的习惯使用i++,得改一下。

在跑例程的时候发现一个问题。例程是对list<TypeT>的遍历,在for循环中,终结条件我用pos < coll.end()就编译错误,而书上pos !=coll.end()就没问题,现在还不知道怎么回事。

posted on 2009-06-01 11:14 知白守黑 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zbsh/archive/2009/06/01/1493536.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值