STL小人书学习笔记

来源:互联网 发布:mac如何安装软件知乎 编辑:程序博客网 时间:2024/06/07 23:54

北大的网站上发现的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()语句就完成将矢量中的对象插入到链表前端的操作:

“使用插入迭代器可能导致容器中的其他对象移动位置,因而使得现存的迭代器非法。例如,将一个对象插入到矢量容器将导致其他值移动位置以腾出空间。一般来说,插入到象链表这样的结构中更为有效,因为它们不会导致其他对象移动。”

 

 

 

 

 

原创粉丝点击