STL源码剖析学习笔记

deque的迭代器

        

        deque的迭代器除了一些型别定义,主要有以下四个数据成员:

typedef T** map_pointer;

T* cur;
T* first;
T* last;
map_pointer node;

        deque的主要的数据成员:

protected:
    iterator start;
    iterator finish;
    map_iterator map;
    size_type map_size;

         可以看到deque维护了两个迭代器。迭代器的node指向连续空间map某一个元素,first和last指向某个缓冲区的起始和结束,而cur指向当前元素。deque的两个迭代器的cur有特别意义,start.cur指向第一个缓冲区的第一个元素的位置,finish.cur指向最后缓冲区的最后一个元素的位置。所以两个迭代器的first,last和node很可能完全一样(同一个缓冲区),cur才是区分他们的根本。而迭代器其实提供给外界的假象就是它是一个连续空间,iterator的行为就像是cur的行为。所以iterator ite,在++时,只需把cur++即可;在两个迭代器相减时只需把两者的cur相减;比较两个迭代器是否相等时,只需看二者cur是否相等,当然,以上的大前提是一定要考虑是否跨缓冲区间!即迭代器默默维护的first,last,node。

        要注意的是start和finish元素增长的方向是相反的,一个是last---->first,一个是first----->last。

 

转载于:https://www.cnblogs.com/lulu10922/p/8031853.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值