5、迭代器设计原则和Iterator traits的作用与设计

迭代器的设计原则

在上一节4、list深度探索_努力的小带土的博客-CSDN博客讲解list的时候,观察仔细的小伙伴一定注意到了,下面代码中五个typedef是迭代器中必不可少的组成部分。

template<class T, class Ref, class Ptr>
struct __list_iterator{
	//所有的迭代器都要有这5个typedef
	typedef bidirectional_iterator_tag iterator_category;//(1)
	typedef T value_type;//(2)
	typedef Ptr pointer;//(3)
	typedef Ref reference;//(4)
	typedef ptrdiff_t difference_type;//(5)
 .......
}

那么它们到底起到什么作用呢?作用即是回答程序算法的疑惑。在算法程序中,往往都少不了对所调用容器进行属性详解,那么程序是如何知道你所调用容器是什么属性呢?就是通过上述迭代器中的五个typedef,那么算法是怎么使用它们的呢?看下述代码你便知晓。

template<calss I,class I>
inline void algorithm(I first,I last)
{
....
I::iterator_category;
I::value_type;//(2)
I::pointer;//(3)
I::reference;//(4)
I::difference_type;//(5)
}

上述代码,通过直接调用迭代器中的type来获取容器中的相关信息。

Iterator traits的作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值