STL之iterator(迭代器)
3.迭代器简单介绍
除了使用下标来訪问vector对象的元素外,标准库还提供了訪问元素的方法:使用迭代器。迭代器是一种检查容器内元素而且遍历元素的数据类型。
百科释义:
迭代器(iterator)是一种对象,它可以用来遍历标准模板库容器中的部分或所有元素,每一个迭代器对象代表容器中的确定的地址。迭代器改动了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。
1.容器的iterator类型
每种容器类型都定义了自己的迭代器类型,如vector:
vector<int> ::iterator iter;变量名为iter,能够读写vector中的元素。
2.begin和end操作
每种容器都定义了一队命名为begin和end的函数,用于返回迭代器。假设容器中有元素的话,由begin返回的元素指向第一个元素。
vector<int>::iterator iter=v.begin();
若v不为空,iter指向v[0]。
由end返回的迭代器指向最后一个元素的下一个,不存在,若v为空,begin和end返回的同样。
*iter;返回迭代器iter所指元素的引用
++iter即将迭代器向前移动一个位置(相反的--iter)
==和!=操作符来比較两个迭代器,若两个迭代器指向同一个元素,则它们相等,否则不想等。
举例:
#include <iostream>
#include<vector>
using namespace std;
int main (){
<span style="white-space:pre"> </span>vector <int>p;
<span style="white-space:pre"> </span>p.push_back(1);
<span style="white-space:pre"> </span>p.push_back(2);
<span style="white-space:pre"> </span>p.push_back(3);
<span style="white-space:pre"> </span>p.push_back(5);
<span style="white-space:pre"> </span>p.push_back(6);
<span style="white-space:pre"> </span>auto *ite=p.begin();//auto也可写为vector <int>::iterator
<span style="white-space:pre"> </span>while(ite!=p.end())
<span style="white-space:pre"> </span>cout<<*ite++<<endl;
<span style="white-space:pre"> </span>return 0;
}
我们认定某个类型是迭代器当且仅当它支持一套操作,这套操作使得我们能訪问容器的元素或者从一个元素移动到另外一个元素。
STL之iterator(迭代器)的更多相关文章
- C++ Iterator迭代器介绍及Iterator迭代器用法代码举例
C++ Iterator迭代器介绍 迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针.举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历.有这么几种迭代器如下: 迭代 ...
- ES6笔记(6)-- Set、Map结构和Iterator迭代器
系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...
- vector容器+iterator迭代器
关于vector容器的详细描述,可参考:http://www.jb51.net/article/41648.htm 关于iterator迭代器的描述,可参考http://www.cppblog.c ...
- 【转】Java学习之Iterator(迭代器)的一般用法 (转)
[转]Java学习之Iterator(迭代器)的一般用法 (转) 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭 ...
- 设计模式(十五):Iterator迭代器模式 -- 行为型模式
1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用 ...
- C#:iterator 迭代器/partial class 分布类/泛型
C#:iterator 迭代器/partial class 分布类/泛型 iterator 迭代器 写个最简单的迭代,(迭代一个字符串数组): 1.实现接口中的方法: 1 using System; ...
- [设计模式] Iterator - 迭代器模式:由一份奥利奥早餐联想到的设计模式
Iterator - 迭代器模式 目录 前言 回顾 UML 类图 代码分析 抽象的 UML 类图 思考 前言 这是一包奥利奥(数组),里面藏了很多块奥利奥饼干(数组中的元素),我将它们放在一个碟子上慢 ...
- Python 中 Iterator(迭代器)和Iterable(迭代对象)的区别
直接可以用作for循环的数据类型有以下几种: tuple.list.dict.str等, 上述数据类型可以用作for循环的叫做可迭代对象Iterable.可以使用isinstance判断一个对象是否是 ...
- 使用Iterator迭代器循环集合
1.Iterator迭代器用于遍历集合元素,获取迭代器可以使用. 2.Iterator提供了统一遍历集合元素的 方式 ,其提供了用于遍历集合的连个方法----- boolean hasNext()判 ...
随机推荐
- js基础之冒号
js中冒号的作用有两种, 转自:http://www.kqiqi.com/knowledge/web-based/506.html 一.?: 操作符 a = expression ? b : c;如果 ...
- 数据层使用DBHelper.dll来减少工作量
目前在需求确定了以后进行开发的步骤一般是这样的:建立数据表,建立model,构建数据操作层,最后在页面中进行调用.关于数据操作层,因为大量的操作都集中在增加.更新.删除等简易操作,而我之前的写法是每次 ...
- 简单的webservice
Hi,大家好! 今天主要和大家分享,如何搭建一个Web服务,做Android开发,不可避免会涉及到客户端开发,我们怎么样来实现一个服务端,怎么样来实现一个客户端,并相互传递数据.就算调用别人的服务时, ...
- HTML 总结-表单-表单属性
HTML5 表单属性 HTML5 的新的表单属性 本章讲解涉及 <form> 和 <input> 元素的新属性. 新的 form 属性: autocomplete novali ...
- Laravel OAuth2 (一) ---简单获取用户信息
前言 本来要求是使用微信进行第三方登陆,所以想着先用 github 测试成功再用微信测试,可是最近拖了好久都还没申请好微信开放平台的 AppID ,所以就只写 github 的第三方登陆吧,估计微信的 ...
- pip install 出现报asciii码错误的解决
原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码.解决办法是: python目录 Python27\Lib\site-packages 建一个文件site ...
- Introduction to Guid ( globally unique identifier )
什么是 GUID? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装. 在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ...
- python:利用asyncio进行快速抓取
web数据抓取是一个经常在python的讨论中出现的主题.有很多方法可以用来进行web数据抓取,然而其中好像并没有一个最好的办法.有一些如scrapy这样十分成熟的框架,更多的则是像mechanize ...
- HDU 4720 Naive and Silly Muggles (外切圆心)
Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- C++之字符串分割函数split
c++之字符串分割: /* *c++之字符串分割: */ #include <iostream> #include <string> #include <vector&g ...