迭代器是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。《设计模式》一书提供有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]
后续待写。
-
auto_ptr 在c11中已经废除了 ↩