20170415STL014_STL_迭代器

迭代器分类:

STL里面所有的算法都是通过迭代器来进行数据之间的操作。
STL设计不同种迭代器视为了安全,有相应的权限。

1:输入迭代器(InputIterator):
        只能够读取,val = *iter;,支持->操作(间接访问操作),支持++,==,!=操作,不支持>,<操作,其他的操作都不支持(没有op=,不可更改)
        eg:*iter = *last;,这样的操作就是不可行的,不可以给输入迭代器赋值,
2:输出迭代器(OutputIterator):
        支持*iter = *last;操作,但本省要注意深浅拷贝。不支持间接访问(->),与输入迭代器是对立的关系
        不支持==和!=操作(认为输出迭代器没有进行比较的必要)
3:前向迭代器:
        可以输入和输出,支持++操作不支持--操作,支持==,!=操作
4:双向迭代器:
        双向遍历,++--都支持,输入输出,==,!=都支持
5:随机迭代器:
        支持++,--,+=,-=,!=,输入输出,>,<,>=,<=……操作。
        +=,-=的支持可以提高迭代器运算效率(相比++,--操作)。
        随机迭代器是作用于同一块连续的空间,所以支持><比较操作。

迭代器初始化:

1:C++标准库包含C标准库和STL。
    STL:
        分配器:为所有容器分配内存
        容器:按规则存储数据
        迭代器:指向容器中的元素
        算法:通过迭代器进行运算
    C标准库:
2:任何容器都有typedef定义的各种类型,统一了接口,泛型编程(编译时处理)出来的运行效率是要比面向对象(运行时处理)快的。
3:所有的容器都有value_type,pointer……。
4:在继承体系里面,越下面的类是越完全的,vector里面iterator继承于const_iterator,很多方法就可以直接调用,两者的逻辑是完全一样的。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值