asp网站上一篇下一篇代码,如何建设一个个人网站,合肥室内设计公司有哪些,怎么做个网站迭代器
能力#xff1a;行进和存取的能力Input迭代器
一次一个向前读取元素#xff0c;按此顺序一个一个返回元素例子#xff1a;从标准输入装置(键盘) 读取数据#xff0c;同一个数据不会被读取两次#xff0c;流水一样#xff0c;指向的是逻辑位置使用前置式递增运算…迭代器
能力行进和存取的能力Input迭代器
一次一个向前读取元素按此顺序一个一个返回元素例子从标准输入装置(键盘) 读取数据同一个数据不会被读取两次流水一样指向的是逻辑位置使用前置式递增运算符 x 替代后置式递增运算符x前者不需要返回旧的数值不需要花费一个对象来保存旧的数值Input无递减运算操作符号Output输出迭代器
和input迭代器相反作用是将元素数值一个一个写入。不可以使用输出迭代器对同一序列进行两次遍历写入、operator* 只有在赋值语句的左手边才会有效输出迭代器没有比较操作无法检测 输出迭代器是否有效或者写入数据是否成功例子inserters用于将元素插入到容器内的一种迭代器对其赋予一个新的数值就会将其安插在容器内部元素之前不会被覆盖Forward (前向)迭代器
forward前向迭代器是 input(全部功能)和output(部分功能)迭代器的结合。区别于输出迭代器前向迭代器可以多次指向同一群集中的同一个元素并可以多次处理同一个元素
// Ok for output iterators
// Error for forward iterators
while(true){*pos foo();pos;
}// Ok for forward iterators
// Error for output iterators
while(pos ! coll.end()){*pos foo();pos;
}
forward迭代器提领数据之前需要确保数据有效如果使用whiletrue,就会出现错误因为forward会访问 end()对应的元素引发错误输出迭代器不可以使用 这个循环 while(pos ! coll.end()) 因为其没有定义operator!Bidirectional Random Access (随机存取)迭代器
需要提供迭代器的算数运算类似于指针的算数运算也就是加减某一个特定的偏移量能处理距离问题使用诸如 等相互关系运算符进行比较支持随机存取迭代器的对象和型别可随机存取的容器(vector\deque)、strings(字符串、string、wstring)、一般的array(指针)只有是随机存取迭代器才可以使用operator 作为循环的结束与否的判断条件代码一定要严谨比如(coll.end()-1)如果群集为空便会访问到begin()之前的数据出现错误下面的代码可能出现问题vector迭代器可能被实例化为一般的指针考虑到C不允许你修改任何基本型别的暂时值(包括指针),但是struct和class可以因此使用辅助对象strings迭代器也常会被实例化为一般的字符指针
迭代器相关的辅助函数
advance() 、distance() 适用于random access迭代器前进后退以及处理迭代器之间的距离iter_swap适用于迭代器的数值交换迭代器配接器 逆向模式、安插模式、流模式
逆向模式
重新定义递增和递减运算行为倒置Insert迭代器 将赋值新值转化为安插新值Input stream 缺省调用后面三个数值均使用默认值