迭代器的意义在哪里

今天我用vector<int>类下的迭代器给一个900000的数组赋值,发现它并不比下标索引符[]速度快,它存在有什么意义吗?代码如下,还是我这个例子不好????#inc... 今天我用 vector<int> 类下的迭代器给一个900000的数组赋值,发现它并不比下标索引符[]速度快,它存在有什么意义吗?代码如下,还是我这个例子不好????
#include<iostream.h>
#include<string.h>
#include<time.h>
#include<vector>
using namespace std;
int main()
{
double t1=clock(),t2;
vector<int> a(9000000);
for(int i=0;i<9000000;i++)
a.push_back(i);

vector<int>::iterator ite=a.begin();
for(int j=0;i<9000000;i++)
{
*(ite+j)=j*j;
a[j]=j*j;//两者方式访问a[j]似乎无差别
}

for(int k=0;k<100;k++)
cout<<a[k]<<' ';
cout<<endl<<endl;
t2=clock();

cout<<t2-t1<<endl;

return 0;
}
展开
 我来答
百度网友e2ca0b5b
2017-05-11 · 知道合伙人互联网行家
百度网友e2ca0b5b
知道合伙人互联网行家
采纳数:15 获赞数:378
广东朝阳网商通科技有限公司最佳员工 国家高校一等助学金获得者

向TA提问 私信TA
展开全部

首先你要知道什么是迭代器

迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。迭代器提供一些基本操作符:*、++、==、!=、=。这些操作和C/C++“操作array元素”时的指针接口一致。

迭代器的意义:迭代器就是把不同的数据结构 "相同功能 "的函数装到一个名字相同的函数里,这样的话你在写算法的时候就可以不管你要操作的数据结构的逻辑结构了。
比如不管是链表,数组还是别的什么,统一都用迭代器进行访问的话可能都是   Next()表示下一个元素   Pre()表示上一个元素等等 。

其实意思就是,不管你用的是链表,2叉树、3叉树、N叉树,还是向量。 迭代器都可以让你从first开始,使用next,到达last,而且一个不漏滴都走一遍。
你不必知道在next的时候,迭代器是怎样从当前节点跳到下一个节点的。
就和猴子一样,你不必知道猴子是怎样从这个树的节点跳到那个树的!总之,猴子可以把树的所有节点跳一边

可I骨
2013-04-08 · TA获得超过286个赞
知道答主
回答量:85
采纳率:0%
帮助的人:77.2万
展开全部
我记得STL源代码里面是重载了[],vector::operator[] () 里面也是用了iterator来操作的,所以速度方面在release版本下差别不大,只是operator[]()还包括了对边界的判断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-04-07 · TA获得超过380个赞
知道小有建树答主
回答量:618
采纳率:50%
帮助的人:228万
展开全部
可以动态追加内容 而且Vector已经封装了好多 很牛的函数 重载了很多运算符 什么插入 查找 清空 总重要的就是 跌带器的引入 很多问题迎刃而解
更多追问追答
追问
比如说呢
追答
比如数组你定义了 int a[10];
现在你发现数组不够用了你怎么办?vector 就可以不考虑容量,直接push_back
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式