java vector迭代器_C++ Iterator迭代器介绍及Iterator迭代器用法代码举例

迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针。举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历。有这么几种迭代器如下:

迭代器描述

input_iterator提供读功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。

output_iterator提供写功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。

forward_iterator 可向前移动的,同时具有读写功能的迭代器。同时具有input和output迭代器的功能,并可对迭代器的值进行储存。

bidirectional_iterator双向迭代器,同时提供读写功能,同forward迭代器,但可用来进行增加(++)或减少(--)操作。

random_iterator 随机迭代器,提供随机读写功能.是功能最强大的迭代器, 具有双向迭代器的全部功能,同时实现指针般的算术与比较运算。

reverse_iterator  如同随机迭代器或双向迭代器,但其移动是反向的。(Either a random iterator or a bidirectional iterator that moves in reverse direction.)

vector容器类就有一个random-access随机迭代器,这也意味着其可以使用随机读写的算法。既然随机迭代器具有全部其它迭代器的特性,这也就是说为其它迭代器设计的算法也可被用在vector容器上。

C++ Iterator迭代器操作举例

(www.169it.com)

(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector::iterator iter; //这条语句定义了一个名为iter的变量,它的数据类型是由vector定义的iterator类型。

(2) 使用迭代器读取vector中的每一个元素:vector ivec(10,1);

for(vector::iterator iter=ivec.begin();iter!=ivec.end();++iter)

{

*iter=2; //使用 * 访问迭代器所指向的元素

}

const_iterator:

只能读取容器中的元素,而不能修改。for(vector::const_iterator citer=ivec.begin();citer!=ivec.end();citer++)

{

cout<

//*citer=3; error

}

vector::const_iterator 和 const vector::iterator的区别

const vector::iterator newiter=ivec.begin();

*newiter=11; //可以修改指向容器的元素

//newiter++; //迭代器本身不能被修改

(3) iterator的算术操作:

iterator除了进行++,--操作,可以将iter+n,iter-n赋给一个新的iteraor对象。还可以使用一个iterator减去另外一个iterator.const vector::iterator newiter=ivec.begin();

vector::iterator newiter2=ivec.end();

cout<

一个很典型使用vector的STL代码:#include 

#include 

using namespace std;

int main()

{

vector ivec;

ivec.push_back(1);

ivec.push_back(2);

ivec.push_back(3);

ivec.push_back(4);

for(vector::iterator iter = ivec.begin();1. iter != ivec.end(); ++iter)

cout <

}

如下代码对vector容器对象生成和使用了迭代器:vector the_vector;

vector::iterator the_iterator;

for( int i=0; i 

the_vector.push_back(i);

int total = 0;

the_iterator = the_vector.begin();

while( the_iterator != the_vector.end() ) {

total += *the_iterator;

the_iterator++;

}

cout <

提示:通过对一个迭代器的解引用操作(*),可以访问到容器所包含的元素。

您可能感兴趣的文章:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值