Item47
STL迭代器分类:input迭代器、output迭代器、forward迭代器、bidirectional迭代器、random access迭代器。
Input迭代器:只能向前移动,一次一步,客户只读取(不可写)他们所指的东西,而且只能读取一次。C++程序库中的istream_iterators就是input迭代器:模仿指向输入文件的阅读指针。
Output迭代器:只能向前移动,一次一步名客户只可写(不可读)他们所指的东西,而且只能写一次。C++程序库中的ostream_iterator就是output迭代器:模仿指向输出文件的涂写指针。
Forward迭代器:可以做前述两种分类所能作的每一件事,而且可以读或写其所指物一次以上。(可施行于多次性操作算法)
Bidirectional迭代器:他除了可以向前移动还可以向后移动。STL的list迭代器就是这一类:set、multiset、map、multimap。
Random access迭代器:可以在常量时间内向前或向后跳跃任意距离。Vector、deque、string迭代器就是这一类。
struct input_iterator_tag{};
struct output_iterator_tag{};
struct forward_iterator_tag: public input_iterator_tag{};
struct bidirectional_iterator: public forward_iterator_tag{};
struct random_access_iterator: public bidirectional_iterator_tag{};
这些structs之间的是继承关系。
Item47的更多相关文章
- 深入分析JavaWeb Item47 -- Struts2拦截器与文件上传下载
一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事. 过滤器是Servlet规范中的技术,能够对请求和响应进行过滤. 拦截器是Struts2框架中的技术. ...
- 《Effective C#》读书笔记
Effiective C# Item1 : 使用属性代替成员变量 Effective C# Item2:运行时常量(readonly)优于编译时常量(const) Effective C# Item3 ...
- 读书笔记 effective c++ Item 7 在多态基类中将析构函数声明为虚析构函数
1. 继承体系中关于对象释放遇到的问题描述 1.1 手动释放 关于时间记录有很多种方法,因此为不同的计时方法创建一个TimeKeeper基类和一些派生类就再合理不过了: class TimeKeepe ...
- 读书笔记 effective c++ Item 42 理解typename的两种意义
1. class和typename意义相同的例子 问题:在下面的模板声明中class和typename的区别是什么? template<class T> class Widget; // ...
- 读书笔记 effective c++ Item 42 理解typename的两种涵义
1. class和typename含义相同的例子 问题:在下面的模板声明中class和typename的区别是什么? template<class T> class Widget; // ...
- uc 下载页面 记录备份
记录一下 <!doctype html> <html> <head> <meta charset="utf-8"> <titl ...
- Xamarin.Forms: 无限滚动的ListView(懒加载方式)
说明 在本博客中,学习如何在Xamarin.Forms应用程序中设计一个可扩展的无限滚动的ListView.这个无限滚动函数在默认的Xamarin.Forms不存在,因此我们需要为此添加插件.在这里我 ...
随机推荐
- Codeforces Round #328 (Div. 2) D. Super M 虚树直径
D. Super M Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/592/problem/D ...
- spring-mvc整合freemarker并在ftl模版中显示服务端校验的错误信息,JSR303或者JSR349
写法有多种,应该可以任意组合,最重要的是要引入spring.ftl 1.Bean里面的就不再多写了,来个简单就可以了 @NotEmpty(message="用户密码码不可为空") ...
- delphi 设置超链接
的属性 的事件 的方法 //1设置链接类型//2获取样式 链接和提示信息 //title是提示信息//HTTPS https://<a href="https://www.baidu ...
- python选择排序
def select_sort(list): for i in range(len(list)): position = i for j in range(i,len(list)): if list[ ...
- thrift学习笔记
Thrift学习笔记 一:thrift介绍 Thrift是facebook开发的用来处理各不同系统之间数据通讯的rpc服务框架,后来成为apche的开源项目.thrift支持多种程序语言,包括Java ...
- iOS开发——笔记篇&关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结
关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结 一:Plist读取 /************************************ ...
- android149 360 程序锁输入密码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- Javascript-XMLHttpRequest对象简介
XMLHttpRequest是Ajax的核心,通过调用XMLHttpRequest对象的属性和方法可以实现在客户端和浏览器之间进行数据的异步传输,从而实现页面的无刷新效果. XMLHttp ...
- js中常用属性备忘
. onsubmit一般用来做验证的,用来控制表单提交的. 之前使用数据提交基本上使用ajax做数据提交,在数据验证的时候,只有通过数据验证之后,才会post/get数据到对应api文件,但是这次涉及 ...
- Getting started with Apache Camel--转载
原文地址:http://www.javacodegeeks.com/2012/12/getting-started-with-apache-camel.html About Camel: Apache ...