博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迭代器 in C++
阅读量:4699 次
发布时间:2019-06-09

本文共 1481 字,大约阅读时间需要 4 分钟。

 

    

注意问题4是个判断题,答案是错!!!

 

因为根据ppt里,迭代器用于访问和处理一级容器的元素。

一级容器只包括顺序容器,关联容器

不包括容器适配器。

答案是错!

 

注意:这也是个判断题,答案是错!(只有随机存取迭代器可以比较大小)

迭代器的分类:

 

  1.输入迭代器(input iterator)

        input iterator就像其名字所说的,工作的就像输入流一样.我们必须能

  • 取出其所指向的值  
  • 访问下一个元素
  • 判断是否到达了最后一个元素
  • 可以复制

  因此其支持的操作符有  *p,++p,p++,p!=q,p == q这五个.凡是支持这五个操作的类都可以称作是输入迭代器.当然指针是符合的.

  2.输出迭代器(output iterator)

    output iterator工作方式类似输出流,我们能对其指向的序列进行写操作,其与input iterator不相同的就是*p所返回的值允许修改,而不一定要读取,而input只允许读取,不允许修改.

    支持的操作和上头一样,支持的操作符也是 *p,++p,p++,p!=q,p == q.

 

  使用Input iterator和output iterator的例子:

 

1 template
2 void copy(In start,In beyond, Out result) 3 {
4 while(start != beyond) {
5 *result = *start; //result是输出迭代器,其*result返回的值允许修改 6 ++result; 7 ++start; 8 } 9 } 10 11 //简写 12 template
13 void copy(In start,In beyond, Out result) 14 {
15 while(start != beyond) 16 *result++ = *start++;//这个应该能看懂的... 17 }

   3.前向迭代器(forward iterator)

     前向迭代器就像是输入和输出迭代器的结合体,其*p既可以访问元素,也可以修改元素.因此支持的操作也是相同的.

   4.双向迭代器(bidirectional iterator)

     双向迭代器在前向迭代器上更近一步,其要求该种迭代器支持operator--,因此其支持的操作有  *p,++p,p++,p!=q,p == q,--p,p--

   5. 随机存取迭代器(random access iterator)

    即如其名字所显示的一样,其在双向迭代器的功能上,允许随机访问序列的任意值.显然,指针就是这样的一个迭代器.

    对于随机存取迭代器来说, 其要求高了很多:

  • 可以判断是否到结尾(  a==b or a != b)
  • 可以双向递增或递减( --a or ++a)
  • 可以比较大小( a < b or a > b or a>=b ...etc)
  • 支持算术运算( a + n)
  • 支持随机访问( a[n] )
  • 支持复合运算( a+= n)

  结构图:

 

下面是vector 和 set遍历的两个例子

转载于:https://www.cnblogs.com/skx971016/p/6993881.html

你可能感兴趣的文章
eval(PHP 4, PHP 5)
查看>>
readelf用法小记
查看>>
Java中JavaScript unescape与escape函数算法
查看>>
js的基础要点
查看>>
C#/IOS/Android通用加密解密方法
查看>>
Web API 简单示例
查看>>
返璞归真 asp.net mvc (4) - View/ViewEngine
查看>>
ADO.Net对Oracle数据库的操作【转载】
查看>>
Contoso 大学 - 6 – 更新关联数据
查看>>
RESTful API 设计指南
查看>>
Windows 10正式版的历史版本
查看>>
Visual Studio 2015年预览设置: 辅助安装程序说明
查看>>
python开发学习-day03(set集合、collection系列 、深浅拷贝、函数)
查看>>
C#中用DateTime的ParseExact方法解析日期时间(excel中使用系统默认的日期格式)
查看>>
W3100SM-S 短信猫代码发送 上
查看>>
Linux IO模式及 select、poll、epoll详解
查看>>
Log4j知识汇总
查看>>
java解析XML大全(转)
查看>>
移上显示大图
查看>>
document.compatMode介绍
查看>>