1.30.2019 迭代器(ing)

严格来说,string对象不属于迭代器类型,但是string支持很多与容器类型类似的操作。
迭代器也提供对对象的间接访问。
迭代器分有效和无效。有效迭代器1、指向某个元素2、指向容器尾元素的下一位置。其余情况为无效

begin:返回指向第一个元素。
end:尾后迭代器。返回指向容器尾元素的下一位置,即“容器的一个本不存在的尾后元素”。
若容器为空v.begin()=v.end()。
用==和!=比较两个合法合法迭代器是否相等。

运算符:
*iter
iter->mem
++iter
–iter
iter1==iter2
iter1!= iter2

解引用迭代器
确保V非空 if(v.begin()!=v.end())

迭代器用递增运算符来从一个元素移动到下一个元素。不能对end进行递增和解引用。
for (auto it=s.begin();it!=s.end() && !isspace(*it);++it)遍历

isspace(n)当n是空白(空格横向制表符,纵向制表符回车,换行,进纸)是为真,返回值为1。
解引用迭代器:可获得迭代器所指对象。
**箭头运算符 ->:**把解引用和成员访问两个操作结合在一起。
即it->mem和(*it).mem表达的意思相同。
PS.不能在范围for循环中向vector对象添加元素。

迭代器运算

iter1-iter2:两个迭代器相减的结果是它们之间的距离。没有+
、>、>=、<、<=:迭代器的关系运算符。如果某迭代器指向的容器位置在另一个迭代器所指位置之前,说明前者小于后者。(迭代器是位置的体现)
参与运算的两个迭代器必须指向同一容器中的元素或者尾元素的下一个位置。
difference_type:迭代器距离的类型名。可正可负,为带符号类型。
指向某vector中间位置的元素:
auto mid=v.begin()+vi.size()/2
经典二分搜索。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值