迭代器(iterator)、容器(container)、算法(algorithm)之间的巧妙结合

迭代器是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。《设计模式》一书提供有23个设计模式的完整描述,其中iterator模式定义如下:提供一种方法,使之能够依序巡访某个聚合物(容器)所含 的各个元素,而又无需暴露该聚合物的内部表述方式。本文详细讲解迭代器。
不论是泛型思维或stl的实际运用,迭代器都扮演着重要的角色。
stl的中心思想在于:将灵气窗口和算法分开,彼此独立设计,最后再以帖胶着剂将它们撮合在一起。窗口和算法的泛型化,从技术角色来看并不困难,C++的class template和function template 可分别达成目标。

如下例子:

template<class InputIterator,class T>
InputIterator find(InputIterator first,InputIterator last, const T& value) {
      while(first != last && *frist != value)
          ++first;
      return first;
}
迭代器是一种smart pointer

迭代器是一种行为类似的对象,而各种行为中最也是最重要的命题内容提领和成员访问,因此,迭代器最重要的编程工作就是对operator*和operator->进行重载工作。

T& operator*() const { *pointer;}
T* operator->() const { opionter;}

关于这一点,C++标准程序库有一个auto_prt可供我们参考。这是一个用来包装原生的对象,声名狼藉的内存漏洞问题可经获得解决 [1]


后续待写。


  1. auto_ptr 在c11中已经废除了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 很实用的编程英语词库,共收录一千五百余条词汇。 第一部分: application 应用程式 应用、应用程序app...
    春天的蜜蜂阅读 5,313评论 0 22
  • 1 场景问题# 1.1 工资表数据的整合## 考虑这样一个实际应用:整合工资表数据。 这个项目的背景是这样的,项目...
    七寸知架构阅读 7,342评论 0 53
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 5,317评论 0 49
  • 迭代器是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。在设计模式中,迭代器模式是指:提供一种方...
    wayyyy阅读 4,884评论 1 2
  • 今天我看了一本有关励志的书《最努力的运气最好》她曾经是个非常浪费时间的人,考上台湾大学之后,经常逃课,谈恋爱,直...
    辣条队友i阅读 3,379评论 0 0