返回随笔C++
旧稿归档ENGINEERING NOTE

STL:迭代器的概念、改进与模型

从泛型编程中的概念与模型继续深入迭代器,并记录 copy 与流迭代器的组合用法。

C++STL迭代器

概念,改进和模型

STL有着许多个c++术语无法描述的特性。

就迭代器而言,它可以是一个指针,一个结构,一个类。它无法用一个确切的“类型”来形容,只是存在一类需要这种东西来满足需求。C++将这种东西称作“概念”。

正向迭代器是一个类,输入迭代器也是一个类,但正向迭代器拥有输入迭代器所有的功能,这可以看成一种继承关系。但是两个概念之间的继承是没有意义的,但可以将正向迭代器看成输入迭代器的“改进”。

概念的具体实现形式为模型。若某样东西满足了概念的所有需求,它即为该概念的一个“模型”。

int* ps = new int(3)

ps指针可以随机访问,可以读写,它就可以看成随机迭代器的一个模型。

深入讨论迭代器

1.将指针用于迭代器

const int NUM = 5;
int rec[NUM] = {1, 2, 4, 3, 0};
sort (rec, rec + NUM);  //rec + NUM即数组超尾,c++确保这是被定义的
for (int x : rec)
    cout << x << endl;

如上所示,普通的指针可以作为迭代器使用,可以使用诸如sort()的STL方法。

2. copy(), ostream_iterator, istream_iterator

未完……先学后面