码迷,mamicode.com
首页 > 编程语言 > 详细

容器和算法2

时间:2019-03-09 12:55:57      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:自己   ++   遍历   iter   程序设计   基本操作   复杂   表操作   智能   

迭代器:

  上一节我们的栗子虽然工作得很好并也使用了一个标准的容器(向量容器),但它还是有个小问题。就是在漏历向量里的各个元素时,我们仍把它视为一个C++数组来对待。
  刚好我们的向量容器允许使用下表操作符来访问它的各个元素:names[x]。但是如果想改用另一种不提供此方法访问的容器(比如栈),我们就不得不对程序做很多修改才得以实现。

  因为对容器里的各个元素进行遍历是一种十分常见的任务,所以应该有一种标准的方式来做这件事,对吧?
  C++标准库提供的各种迭代器(iterator)就是这么来的。
  迭代代器是一种功能非常有限却非常实用的函数,提供一些基本操作符:*、++、==、!=、=。迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力。

  因为迭代器的功能是如此的基本,所以标准库里的每一种容器都支持。
  通过使用迭代器,当在程序里改用另一种容器的时候就用不着修改那么多的代码了。
  每一种容器都必须提供自己的迭代器,事实上每种容器都将其迭代器以嵌套的方式定义于内部。因此各种送代器的接口相同,型号却不同,这就是所谓泛型程序设计的概念:所有操作行为都随用相同接口,虽然它们的具体实现不同。

  修改vector.cpp,使用送代器。



容器和算法2

标签:自己   ++   遍历   iter   程序设计   基本操作   复杂   表操作   智能   

原文地址:https://www.cnblogs.com/tianqizhi/p/10500187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!