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(迭代器)的更多相关文章

  1. C++ Iterator迭代器介绍及Iterator迭代器用法代码举例

    C++ Iterator迭代器介绍 迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针.举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历.有这么几种迭代器如下: 迭代 ...

  2. STL标准库-迭代器

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 本节主要介绍STL六大部件中的Iterators迭代器. 在语言方面讲,容器是一个class template, 算法是一个仿函 ...

  3. ES6笔记(6)-- Set、Map结构和Iterator迭代器

    系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...

  4. vector容器+iterator迭代器

    关于vector容器的详细描述,可参考:http://www.jb51.net/article/41648.htm   关于iterator迭代器的描述,可参考http://www.cppblog.c ...

  5. 【转】Java学习之Iterator(迭代器)的一般用法 (转)

    [转]Java学习之Iterator(迭代器)的一般用法 (转) 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭 ...

  6. 设计模式(十五):Iterator迭代器模式 -- 行为型模式

    1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用 ...

  7. C#:iterator 迭代器/partial class 分布类/泛型

    C#:iterator 迭代器/partial class 分布类/泛型 iterator 迭代器 写个最简单的迭代,(迭代一个字符串数组): 1.实现接口中的方法: 1 using System; ...

  8. [设计模式] Iterator - 迭代器模式:由一份奥利奥早餐联想到的设计模式

    Iterator - 迭代器模式 目录 前言 回顾 UML 类图 代码分析 抽象的 UML 类图 思考 前言 这是一包奥利奥(数组),里面藏了很多块奥利奥饼干(数组中的元素),我将它们放在一个碟子上慢 ...

  9. Python 中 Iterator(迭代器)和Iterable(迭代对象)的区别

    直接可以用作for循环的数据类型有以下几种: tuple.list.dict.str等, 上述数据类型可以用作for循环的叫做可迭代对象Iterable.可以使用isinstance判断一个对象是否是 ...

随机推荐

  1. 21. Merge Two Sorted Lists —— Python

    题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...

  2. nohup命令浅析

    要将一个命令放到后台执行,我们一般使用nohup sh command & &都知道是放到后台执行这个命令,那么nohup是做什么的? 这就要从unix的信号说起,unix的信号机制可 ...

  3. mysql insert一条记录后怎样返回创建记录的主键id,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

  4. windows时间同步出错

    http://jingyan.baidu.com/article/fd8044faf1f7ae5030137a7d.html

  5. 软考类----编码、ASII码等

    淘米2014实习生笔试,今年是淘米第一年招暑期实习生,笔试好大部分考的是软考的题目啊啊啊啊(劳资后悔当年没考软考刷加权),其他是浅而泛的风格,C++,SQL语句,数据结构(哈夫曼树,二叉查找树,栈后缀 ...

  6. 【转】web测试方法总结

      一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号.禁止直接输入特殊字符时 ...

  7. R: for installing package &#39;RODBC&#39;

    Today, i try to install a package in R named 'DOBDC', while i meet a message: > install.packages( ...

  8. https证书申请流程和简介

    HTTPS证书是什么 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安 ...

  9. 最新的css3动画按钮效果

    效果演示     插件下载

  10. C语言中的sizeof函数总结

    sizeof函数的结果: 变量:变量所占的字节数. ; printf( 数组:数组所占的字节数. ,,,,}; ] = {,,,,}; printf("size_arr1=%d\n" ...