STL的迭代器
来源:互联网 发布:淘宝客推广权重 编辑:程序博客网 时间:2024/05/29 14:04
对应于它们所支持的操作,共有五种 iterators(迭代器)。
input output
/
forward
|
bidirectional
|
random access
要注意,上面这图表并不是表明它们之间的继承关系:而只是描述了迭代器的种类和接口。处于图表下层的迭代器都是相对于处于图表上层迭代器的扩张集。例如:forward迭代器不但拥有input和output迭代器的所有功能,还拥有更多的功能。input iterators(输入迭代器)只能向前移动,每次只能移动一步,只能读它们指向的东西,而且只能读一次。它们以一个输入文件中的 read pointer(读指针)为原型;C++ 库中的 istream_iterators 就是这一种类的典型代表。output iterators(输出迭代器)与此类似,只不过用于输出:它们只能向前移动,每次只能移动一步,只能写它们指向的东西,而且只能写一次。它们以一个输出文件中的 write pointer(写指针)为原型;ostream_iterators 是这一种类的典型代表。这是两个最不强力的iterator categories(迭代器种类)。因为 input(输入)和 output iterators(输出迭代器)只能向前移动而且只能读或者写它们指向的地方最多一次,它们只适合 one-pass 运算。
一个更强力一些的 iterator category(迭代器种类)是 forward iterators(前向迭代器)。这种 iterators(迭代器)能做 input(输入)和 output iterators(输出迭代器)可以做到的每一件事情,再加上它们可以读或者写它们指向的东西一次以上。这就使得它们可用于 multi-pass 运算。STL 没有提供 singly linked list(单向链表),但某些库提供了(通常被称为 slist),而这种 containers(容器)的 iterators(迭代器)就是 forward iterators(前向迭代器)。TR1 的 hashed containers(哈希容器)的 iterators(迭代器)也可以属于 forward category(前向迭代器)。
bidirectional iterators(双向迭代器)为 forward iterators(前向迭代器)加上了和向前一样的向后移动的能力。STL 的 list 的 iterators(迭代器)属于这一种类,set,multiset,map 和 multimap 的 iterators(迭代器)也一样。
最强力的 iterator category(迭代器种类)是 random access iterators(随机访问迭代器)。这种 iterators(迭代器)为 bidirectional iterators(双向迭代器)加上了 "iterator arithmetic"(“迭代器运算”)的能力,也就是说,在常量时间里向前或者向后跳转一个任意的距离。这样的运算类似于指针运算,这并不会让人感到惊讶,因为 random access iterators(随机访问迭代器)就是以 built-in pointers(内建指针)为原型的,而 built-in pointers(内建指针)可以和 random access iterators(随机访问迭代器)有同样的行为。vector,deque 和 string 的 iterators(迭代器)是 random access iterators(随机访问迭代器)。
转载地址:http://blog.sina.com.cn/s/blog_6a5e34ad0100w6yo.html
- STL的迭代器--Iterator
- STL的迭代器
- STL的迭代器--Iterator
- stl迭代器的种类
- 关于STL的迭代器
- STL的逆向迭代器
- STL的迭代器
- STL 迭代器的剖析
- c++STL的迭代器
- STL的逆向迭代器
- STL迭代器的分类
- STL中 迭代器的小节
- STL迭代器失效的情况
- STL中的迭代器的类型
- 【STL】C++的迭代器Interator
- sgi stl 迭代器的设计
- STL迭代器失效的问题
- STL iterator迭代器的使用
- C#中Access 连接字符串
- BOM子节点汇总数据
- Peer-to-Peer (P2P) communication across middleboxes
- html判断IE版本
- 线程的状态转换
- STL的迭代器
- Windows Resources. Cannot connect to machine
- BroadcastReceiverTest用例了解广播接收者BroadcastReceiver的使用
- 使用iconv命令轻松实现linux下字符集编码的转换
- 程序主动广播(Intent)
- 打开loadrunner->samples->webserver 1080端口占用
- SplashScreen实现加载数据
- 限制webview缩放和隐藏zoombar(2.3)
- 网络爬虫