JAVA vector的遍历_谈谈vector容器的三种遍历方法

说明:本文仅供学习交流。转载请标明出处。欢迎转载!

vector容器是最简单的顺序容器,其用法相似于数组。实际上vector的底层实现就是採用动态数组。在编敲代码的过程中。经常会变量容器中的元素,那么怎样遍历这些元素呢?本文给出三种遍历方法。

方法一:採用下标遍历

由于vector容器就是对一个动态数组的包装,所以在vector容器的内部,重载了[]运算符,函数原型为:reference operator [] (size_type n);所以我们能够採用相似于数组的方式来訪问vector容器内部的元素,详细代码例如以下:

#include

#include

using namespace std;

typedef vector vInt;

void print_vec1(const vInt & v)//方法一,採用下标訪问

{

int i;

for(i=0;i

{

cout<

}

cout<

}

方法二:採用迭代器遍历

我们都知道,数组和指针有着天然的练习。

假设我们将vector容器看成一个数组,那么我们也能够将迭代器看出一个指针。实际上迭代器的内部实现就是对一个原生指针的封装。迭代器本身就是一个智能指针。以下给出採用迭代器遍历的代码:

#include

#include

using namespace std;

typedef vector vInt;

void print_vec2(const vInt &v)//方法二,採用迭代器訪问

{

vInt::const_iterator iter=v.begin();//注意须要用const_iterator,由于容器是const类型

while(iter!=v.end())

{

cout<

}

cout<

}

方法三:利用copy函数遍历

在泛型算法中,提供了一个复制函数copy,copy的函数原型大致为:copy(b,e,b1),作用是将迭代器范围[b,e)内的元素拷贝到以迭代器b1開始的位置。设想,假设我们将b1设置为一个输出流迭代器ostream_iterator。那么我们就把内容拷贝到输出流cout,相当于显示除了全部元素。详细代码例如以下:

#include

#include

#include//用到几种迭代器

#include//用到几个泛型算法

using namespace std;

typedef vector vInt;

void print_vec3(const vInt &v)//方法三,将容器的内容拷贝到cout绑定的迭代器

{

copy(v.begin(),v.end(),ostream_iterator(cout," ") );

cout<

}

以下我们给出主函数下的測试代码:

int main()

{

vInt v;

int i;

for(i=0;i<10;i++)

{

v.push_back(i);

}

print_vec1(v);//输出 0 1 2 3 4 5 6 7 8 9

print_vec2(v);//输出 0 1 2 3 4 5 6 7 8 9

print_vec3(v);//输出 0 1 2 3 4 5 6 7 8 9

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值