旧稿归档ENGINEERING NOTE
STL:迭代器的概念、改进与模型
从泛型编程中的概念与模型继续深入迭代器,并记录 copy 与流迭代器的组合用法。
概念,改进和模型
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
未完……先学后面