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

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

如下例子:

template
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中已经废除了 ↩

你可能感兴趣的:(迭代器(iterator)、容器(container)、算法(algorithm)之间的巧妙结合)