比较访问vector元素的两种方式:
一、使用下标访问;
二、使用迭代器(类似指针)访问。
代码:
#include<iostream>
#include<vector>
#include<windows.h>
using namespace std;
int main(){
vector<int> vec;
vec.resize(100010000);
//实验组一
int start=GetTickCount();
for(int i=0;i<vec.size();i++){
vec[i]=i;
}
int end=GetTickCount();
cout<<"实验组一: for循环中使用下标方式,i++方式,循环体内使用下标赋值 "<<endl;
cout<<(end-start)<<endl;
//实验组二
start=GetTickCount();
for(int i=0;i<vec.size();++i){
vec[i]=i;
}
end=GetTickCount();
cout<<"实验组二: for循环中使用下标方式,++i方式,循环体内使用下标赋值"<<endl;
cout<<(end-start)<<endl;
int i;
//实验组三
start=GetTickCount();
i=0;
for(vector<int>::iterator it=vec.begin();i<vec.size();i++,++it){
*it=i;
}
end=GetTickCount();
cout<<"实验组三: for循环中使用迭代器,迭代器++it方式,循环体内使用迭代器(向量)赋值 "<<endl;
co
访问vector元素:下标 vs 迭代器效率分析

本文对比了通过下标和迭代器两种方式访问vector元素的效率,结果显示,对于int型,i++与++i速度相近;迭代器赋值比下标赋值快;++it比it++更快;而用it!=vec.end()判断循环结束耗时较长。结论是,遍历vector时,下标访问通常更优。注意,vec.end()返回最末元素的下一个位置,vec.front()和back()分别获取首尾元素,begin()和end()返回迭代器。
最低0.47元/天 解锁文章
1772

被折叠的 条评论
为什么被折叠?



