- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++迭代器 iterator
迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。
每种容器类型都定义了自己的迭代器类型,如vector:
vectorint::iterator iter;这条语句定义了一个名为 iter 的变量,它的数据类型是由vectorint定义的 iterator 类型。
使用迭代器读取 vector 中的每一个元素: vectorint ivec(10,1);
for(vectorint::iterator iter=ivec.begin();iter!=ivec.end();++iter)
{
*iter=2; //使用 * 访问迭代器所指向的元素
}
const_iterator:
只能读取容器中的元素,而不能修改。
for(vectorint::const_iterator citer=ivec.begin();citer!=ivec.end();citer++)
{
cout*citer;
//*citer=3; error
}
vectorint::const_iterator 和 const vectorint::iterator 的区别const vectorint::iterator newiter=ivec.begin();
*newiter=11; //可以修改指向容器的元素
//newiter++; //迭代器本身不能被修改
iterator 的算术操作:
iterator 除了进行++,--操作,可以将 iter+n,iter-n 赋给一个新的 iteraor 对象。还可以
使用一个 iterator 减去另外一个 iterator.
const vectorint::iterator newiter=ivec.begin(); vectorint::iterator newiter2=ivec.end(); cout\nnewiter2-newiter;
一個很典型使用 vector 的 STL 程式:
#include vector
#include iostream
3
4 using namespace std; 5
int main() {
vectorint ivec;
ivec.push_back(1);
ivec.push_back(2);
ivec.push_back(3);
ivec.push_back(4);
12
13 for(vectorint::iterator iter = ivec.begin();1. iter != ivec.end(); ++iter) 14 cout *iter endl;
15 }
Iterator(迭代器)模式
一、概述
Iterator(迭代器)模式又称 Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator 模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由 iterator 提供的方法)访问聚合对象中的各个元素。
由于 Iterator 模式的以上特性:与聚合对象耦合,在一定程度上限制了它的广泛运用,一般仅用于底层聚合支持类,如STL 的 list、vector、stack 等容器类及 ostream_iterator 等扩展 iterator。
根据 STL 中的分类,iterator 包括:
Input Iterator:只能单步向前迭代元素,不允许修改由该类迭代器引用的元素。Output Iterator:该类迭代器和 Input Iterator 极其相似,也只能单步向前迭代元素, 不同的是该类迭代器对元素只有写的权力。
Forward Iterator:该类迭代器可以在一个正确的区间中进行读写操作,它拥有Input
Iterator 的所有特性,和 Output Iterator 的部分特性,以及单步向前迭代元素的能力。Bidirectional Iterator:该类迭代器是在 Forward Iterator 的基础上提供了单步向后迭代元素的能力。
Random Access Iterator:该类迭代器能完成上面所有迭代器的工作,它自己独有的
特性就是可以像指针那样进行算术计算,而不是仅仅只有单步向前或向后迭代。
这五类迭代器的从属关系,如下图所示,其中箭头A→B 表示,A 是 B 的强化类型,这也说明了如果一个算法要求B,那么A 也可以应用于其中。
input output
\ / forward
| bidirectional
|
random access
图 1、五种迭代器之间的关系
vector 和 deque 提供
您可能关注的文档
最近下载
- 部编版七年级上册历史课后习题答案.docx VIP
- 数据治理(管理)能力评估 :数据治理与数据管理能力成熟度评估模型2024(62页).pptx VIP
- 智能门禁系统技术创新与应用.pptx VIP
- 开始健身只需五步-来源:英语世界(第2018003期)-商务印书馆有限公司.pdf VIP
- 领悟人生真谛把握人生方向 (修改).pptx VIP
- 博物馆资源融入音乐课程的美育路径研究.docx VIP
- ISO_286-1-公差、偏差和配合的基础-中文-可编辑.docx
- 2020年新版保温工程量计算公式.docx VIP
- 凉拌菜教学课件.ppt VIP
- SW7203数据手册_V13926596180高效率双向升降压.pdf VIP
文档评论(0)