ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

迭代器

2020-03-13 14:03:34  阅读:136  来源: 互联网

标签:容器 p1 迭代 指向 ++ 元素


迭代器

 用于指向顺序容器和关联容器中的元素
 迭代器用法和指针类似
 有const 和非 const两种
 通过迭代器可以读取它指向的元素
 通过非const迭代器还能修改其指向的元素

定义一个容器类的迭代器的方法可以是:

容器类名::iterator 变量名;

或:

容器类名::const_iterator 变量名;

访问一个迭代器指向的元素:

* 迭代器变量名

迭代器上可以执行 ++ 操作, 以使其指向容器中的下一个元素。
如果迭代器到达了容器中的最后一个元素的后面,此时再使用
它,就会出错,类似于使用NULL或未初始化的指针一样。
注意:1.正向和反向迭代器都是单向迭代器,单向迭代器只能++,不能–。
2.反向迭代器也是用++来移动。

示例:

#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v; //一个存放int元素的数组,一开始里面没有元素
v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4);
vector<int>::const_iterator i; //常量迭代器
for( i = v.begin();i != v.end();++i )
cout << * i << ",";
cout << endl;

vector<int>::reverse_iterator r; //反向迭代器
for( r = v.rbegin();r != v.rend();r++ )
cout << * r << ",";
cout << endl;
vector<int>::iterator j; //非常量迭代器
for( j = v.begin();j != v.end();j ++ )
* j = 100;
for( i = v.begin();i != v.end();i++ )
cout << * i << ",";
}

双向迭代器
若p和p1都是双向迭代器,则可对p、p1可进行以下操作:

++p, p++ 使p指向容器中下一个元素
--p, p-- 使p指向容器中上一个元素
* p 取p指向的元素
p = p1 赋值
p == p1 , p!= p1 判断是否相等、不等

注意:单向和双向迭代器都只能一个位置一个位置移动,不能直接访问指定元素。只有随机访问迭代器可以直接访问指定元素。

若p和p1都是随机访问迭代器,则可对p、p1可进行以下操作:

 双向迭代器的所有操作
 p += i 将p向后移动i个元素
 p -= i 将p向向前移动i个元素
 p + i 值为: 指向 p 后面的第i个元素的迭代器
 p - i 值为: 指向 p 前面的第i个元素的迭代器
 p[i] 值为: p后面的第i个元素的引用
 p < p1, p <= p1, p > p1, p>= p1

标签:容器,p1,迭代,指向,++,元素
来源: https://blog.csdn.net/UniversityGrass/article/details/104839786

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有