1.迭代器属性-不全
来源:互联网 发布:淘宝店铺被关闭违规 编辑:程序博客网 时间:2024/05/22 00:46
迭代器
STL
提供的所有算法都是模板,所以需要通过迭代器来对这些模板进行特例化;对象指针使可以用来当做任意种类的迭代器的;- 迭代器主要包含
<utility>
,<iterator>
,<memory>
三种; - 输出迭代器
- 1.使用输出迭代器来存取序列中的元素,存取包含存和取;通常通过循环来完成,需要保证按照有序方式来进行创建;
for(;<not done>;++next)
*next = <whatvecr>; - 2.
next
表示的是类型为X
的一个对象;./输出迭代器的属性.png
; - 3.输出迭代器需要定义的操作包括:
- 1.
*next=<whatever>
将<whatever>
的值赋值给序列中将要产生的下一个元素; - 2.
++next
指向下一个需要操作的元素; - 3.必须保证输出迭代器在存储每一个元素后得以增加;
- 4.必须保证输出迭代器在两次存储的间隔增加的次数不会超过一次;
- 1.
- 1.使用输出迭代器来存取序列中的元素,存取包含存和取;通常通过循环来完成,需要保证按照有序方式来进行创建;
- 输入迭代器
- 1.输入迭代器用来产生新的序列.为了存取已有的值,或者指示需要对已有的序列进行遍历;
for(p=first;p!=last;++p)
<process>(*p); - 2.
p
,first
,last
表示的都是迭代器类型X
的对象,其中last
并不表示实际序列中的任何一个元素,用于表示结尾的标志,不能够尝试获得这些元素的值; - 3.迭代器需要定义的操作包括:
- 1.当两个类型为
X
的迭代器p
和q
没有指向同一个元素,既p!=q
; - 2.
*p
是类型T
的一个右值value
.右值表示的是一个拥有值表达式但是并不一定需要来引用一个对象; - 3.
++p
用来改变p
的值,用来指向下一个元素;./输入迭代器.png
;
while(first!=last)
<process>(*first++);
- 1.当两个类型为
- 4.输入迭代器的操作和输出迭代器的操作都需要包含复制构造函数,析构函数以及赋值运算符;
- 1.输入迭代器用来产生新的序列.为了存取已有的值,或者指示需要对已有的序列进行遍历;
- 前向迭代器
- 1.迭代器更加普遍的用法是存取一个完全存储在内存中的序列;如果存在这几方面的需求:
- 1.对于序列中的元素同时具有读和写的权利;
- 2.需要在所要存取的任意地方标注出下一个位置作为书签用于下次存取;
- 2.两个前向迭代器必须在同一个值域里面;
- 3.前向迭代器类似于指向单向列表中元素的指针;
./前向迭代器.png
;
- 1.迭代器更加普遍的用法是存取一个完全存储在内存中的序列;如果存在这几方面的需求:
- 双向迭代器
- 1.双向迭代器支持递增以及递减操作;双向迭代器类似于双项链表中的元素的指针;
- 2.如果迭代器指向的不是链表的末端,可以通过它来存取链表中的元素,或者移动到序列中下一个元素的位置;
随机存取迭代器
- 1.随机存取迭代器支持整型值的加减操作,指针之间的相减,两个迭代器在序列中的顺序比较操作,以及使用下表方式操作该迭代器等;
- 2.所有适用于双向迭代器的属性也适用于随机存取迭代器;
迭代器的使用选择
- 1.只写操作:前向迭代器,双向迭代器,随机存取迭代器;
- 2.只读操作:前向迭代器,双向迭代器,随机存取迭代器;
- 3.读写操作:双向迭代器,随机存取迭代器;
utility
- 1.在
utility
中包含的是:只有模板类的pair
,一些与之相关的模板函数和操作符,以及其他四个模板操作符; - 2.
pair
:可以构造pair<T,U>
对象然后通过x.first
以及x.second
来访问对象里面的成员; make_pair()
是用来创建产生pair
对象,但是通过这种方法在生成pair
对象时,会忽略掉所有的const
属性,也就是说不可以通过make_pair
对象来产生
一个含有一个或这多个常量成员;也可以通过显示调用pair<T,U>(x,y)
来生成pair
对象;- 3.
operator== operator<
是用来比较两个pair
对象的; - 如果在使用
pair
的过程中出现pair
对象没有定义的错误,需要包含pair
对象;
- 1.在
阅读全文
0 0
- 1.迭代器属性-不全
- jena中解决listDeclaredProperties()函数查找本体属性不全的问题
- Android 关于重写一个居中的Dialog时,背景图片显示不全的问题。Dialog的style属性介绍
- 网站手续全不全
- ant教程(不全)
- 天地本不全
- man 手册不全
- man 手册不全
- man 手册不全
- ubuntu man手册不全
- 全等 和不全等
- Aptana使用技巧不全
- orace 存储过程 ( 不全 )
- firefox 图片显示不全
- vim自动不全括号
- XMLEventReader读取数据不全
- qvfb界面显示不全
- oppo2013笔试题-不全
- http_build_query,fsockopen,stream_set_blocking
- 大数据之:影像提取中深度学习样本库获取的思考
- 设计模式12-享元模式
- 人工智能+客户服务会擦出什么样的火花
- HTTP深入浅出
- 1.迭代器属性-不全
- ValidationException
- 用户统计
- xcode打印不全
- 9.27自己做试卷知识要点
- 回溯法—八皇后问题(N皇后)
- 关于python中的多重继承
- IMP-00058: 遇到 ORACLE 错误 28009 ORA-28009: connection as SYS should be as sysdba or sysora
- TensorFlow 实现人脸识别