SGI-STL 迭代器实现


SGI-STL 迭代器实现


迭代器模式:该模式能够提供一种方法,使之能够依序寻访某个聚合物(容器)所含的每个元素,而又无需暴露该聚合物的内部表达方式。
———————————————————————————————————————— 《STL源码剖析》

它是什么?

它其实就是算法与容器的一种粘胶剂


它像什么?

迭代器的行为非常类似智能指针(SmartPointer),所以对他来说最重要的便是deference(内容提领)和member access(成员访问)。那就是*操作符和->操作符的重载了。关于这两个操作符的重载可以参考STL中auto_ptr的实现。


迭代器五种型别

tralts就像是“原味特性萃取机”,萃取相应型别的特性。
利用“内嵌型别”编程技巧和编译器的“template参数推导功能”增强了C++型别认证方面的能力。

// 用于traits出迭代其所指对象的型别
template <class iterator="">
struct iterator_traits
{ 
  typedef typename Iterator::iterator_category iterator_category;  // 迭代器类型, STL提供五种迭代器

  typedef typename Iterator::value_type        value_type;  // 迭代器所指对象的型别, 
                                                              //如果想与STL算法兼容, 那么在类内需要提供value_type定义

  typedef typename Iterator::difference_type   difference_type; // 这个是用于处理两个迭代器间距离的类型

  typedef typename Iterator::pointer           pointer;  // 直接指向对象的原生指针类型

  typedef typename Iterator::reference         reference;  // 这个是对象的引用类型
};

内嵌型别机制

//内嵌型别机制(以value_type 为例)
template <class T>
struct
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值