北大的网站上发现的stl学习资料,号称三十分钟内掌握stl。可现在三十分钟早已过了,下面是一些代码(全部调试成功,链接地址里的内容有些许错误)和学习笔记,http://net.pku.edu.cn/~yhf/UsingSTL.htm
1.指针迭代器示例: 显示了如何把指针作为迭代器用于STL的find()算法来搜索普通的数组
2.容器迭代器示例:程序创建了一个矢量容器(STL的和数组等价的对象),并使用迭代器在其中搜索。该程序和上列实现功能相同。
“尽管C++指针也是迭代器,但用的更多的是容器迭代器。容器迭代器用法和iterdemo.cpp一样,但和将迭代器申明为指针变量不同的是,你可以使用容器类方法来获取迭代器对象。两个典型的容器类方法是begin()和end()。它们在大多数容器中表示整个容器范围。其他一些容器还使用rbegin()和rend()方法提供反向迭代器,以按反向顺序指定对象范围。”----《三十分钟内掌握STL》
3.输出迭代器:输出迭代器缺省只写,该程序用于将数据从一个位置拷贝到另一个位置。
“由于输出迭代器无法读取对象,因此你不会在任何搜索和其他算法中使用它。要想读取一个拷贝的值,必须使用另一个输入迭代器(或它的继承迭代器)。”
“当使用copy()算法的时候,你必须确保目标容器有足够大的空间,或者容器本身是自动扩展的。”--《三十分钟内掌握STL》
4.输出流迭代器(ostream_iterator):该程序将容器中的值传输到cout输出流对象中
“对于迭代器,有另一种方法使用流和标准函数。理解的要点是将输入/输出流作为容器看待。因此,任何接受迭代器参数的算法都可以和流一起工作” ---《三十分钟内掌握STL》
5.插入迭代器:该程序通过使用front_inserter迭代器对象,可以只用单个copy()语句就完成将矢量中的对象插入到链表前端的操作:
“使用插入迭代器可能导致容器中的其他对象移动位置,因而使得现存的迭代器非法。例如,将一个对象插入到矢量容器将导致其他值移动位置以腾出空间。一般来说,插入到象链表这样的结构中更为有效,因为它们不会导致其他对象移动。”