迭代器的使用

**在c++中,有的类型存在迭代器,利用迭代器可以对对象进行间接访问,像指针一样。
迭代器有有效和无效之分,有效的迭代器只想容器的元素或尾元素的下一位置。
有迭代器的类型同时拥有返回迭代器的成员,比如begin和end成员。begin成员返回的容器第一个位置的元素,end成员返回的是容器尾元素的下一个位置。尾后迭代器end是一个不存在的元素,本身无任何含义,但是仅仅是个标记而已。如果容器为空,则begin与end返回的是同一个迭代器,即尾后迭代器。**

  1. 迭代器的运算符
*iterator   //解引用符
Iterator->mem   //解引用符
Iterator1==iterator  //二者指向相同位置
Iterator1!=iterator2     //二者指向不同位置
++Iterator  //移动到下一个位置
--iterator  //移动到之前的位置

需要注意的是,这些迭代器都必须是同一容器的迭代器且都必须是有效的迭代器。在表中,有两个特有的属于string和vector,其他的类型可能没有定义这两种运算。

  1. 迭代器的类型

拥有迭代器的标准类型使用iterator和const_iterator两种类型。前者指向普通元素,后者指向常量和普通元素都可以。一般在只是读取容器中的元素时,使用const_iterator,反之使用iterator。对于vector和string而言,使用时可以如此表示:

    Vector<T>::iterator it //it可以读写
    Vector<T>::const_iterator it  //it只读
    String::iterator it //it可读写
    String::const_iterator it //it只读

可用cbegin和cend返回常迭代器,而begin和end只是返回普通迭代器。
在string和vector中,迭代器还可以使用如下的运算:

    Iter+n  //向后移动n个位置
    Iter-n  //向前移动n个位置
    Iter+=n和iter-=n  //移动后将位置给iter
    Iter1 - iter2    //得到两个迭代器的距离
    >>=<<=    //判断位置前后

需要注意的是,迭代其之间的运算只能“-”,而没有“+”,如begin + end则不合法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值