前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++之迭代器

C++之迭代器

作者头像
互联网金融打杂
发布2018-04-03 14:14:22
8440
发布2018-04-03 14:14:22
举报
文章被收录于专栏:测试开发架构之路

迭代器的概念

迭代器是用来访问string对象或vector对象的元素的,类似于下标运算和指针。

其对象是容器中的元素或string对象中的字符;

使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素。

迭代器的使用

不同于指针,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员;

比如,这些类型拥有名为begin和end的成员,begin成员负责返回指向第一个元素(或第一个字符)的迭代器,end成员则负责返回指向容器“尾元素的下一个位置”的迭代器;

如果迭代器为空,则begin和end返回的是同一个迭代器;

标准容器迭代器的运算符

和指针类似,也能通过解引用迭代器来获取它所指向的元素,执行解引用的迭代器必须合法并确实指向着某个元素。

代码语言:javascript
复制
string  s("some String");
if (s.begin() !=s.end() )  //确保s非空
{
   auto it=s.begin(); //it 表示s的第一个字符
   *it=toupper(*it);
}

迭代器类型

begin与end运算符

结合解引用与成员访问操作

 解引用迭代器可以获得迭代器所指向的对象(类似与指针)。例如:若it是Vector对象的迭代器,

检查其元素是否为空,只需检查it所指向的字符串是否为空;

代码语言:javascript
复制
(*it).empty();   // it->empty();

某些对vector对象的操作会使迭代器失效

但凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素;

迭代器运算

迭代器的算术运算

可以令迭代器和一个整数值相加(或相减),其返回值是向前(或向后)移动了若干个位置的迭代器。

代码语言:javascript
复制
auto mid = vi.begin() + vi.size() / 2; //vi.size()=10,则mid指向元素是vi[10]
代码语言:javascript
复制
if(it<mid) //处理vi前半部分的元素

使用迭代器运算(二分搜索)

代码

指针也是迭代器

指向数组元素的指针拥有更多功能

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-08-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 迭代器的概念
  • 迭代器的使用
  • 迭代器类型
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档