C++学习:迭代器iterator的使用

C++学习:迭代器iterator的使用


简介:
迭代器是面向对象版本的指针
指针可以指向内存中的一个地址,迭代器可以指向容器中的一个位置,用来遍历STL容器的全部或者部分元素
在STL的每一个容器模板中都定义了一组对应的迭代器类

操作效果
*返回当前位置上元素数值,如果该元素有成员,可以通过迭代器以operate->取用,如it->first/it->second
++将迭代器前进之下一个元素
==&!=判断两个迭代器是否指向同一个位置
=为迭代器赋值

提示

博主:章飞_906285288
博客地址:http://blog.csdn.net/qq_29924041


获得迭代器

迭代器

迭代器描述
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.)(我不太理解它的行为)

所有容器都提供获得迭代器的函数:

操作效果
begin()返回一个迭代器,指向第一个元素
end()返回一个迭代器,指向序列结束

代码案例:
以下是结合vector向量(动态数组)来展示一下迭代器的用法

/*
 * ===========================================================================
 *
 *       Filename:  iteratorTest.cpp
 *    Description:  
 *        Version:  1.0
 *        Created:  2017年06月29日 22时42分11秒
 *       Revision:  none
 *       Compiler:  gcc
 *         Author:   (), 
 *        Company:  
 *
 * ===========================================================================
 */

#include<iostream>
#include<vector>
using namespace::std;


int main(){
  int array[10] = {1,11,111,2,22,222,3,33,333,4};
  vector<int> vec;
  for(int i = 0 ; i < 10; i++ ) {
    vec.push_back(array[i]);
  }
  vector<int>::iterator it;
  it = vec.begin();
  cout<<"the first value:"<<*it<<endl;
  //删除最后一个元素
  vec.pop_back();
  //迭代器的循环遍历方式
  for(it = vec.begin();it!=vec.end();it++){
    cout<<"the value:"<< *it <<endl;
  }


  //创建一个反向迭代器(记住使用的是rbegin和rend函数)
  vector<int>::reverse_iterator rit;
  rit = vec.rbegin();
  cout<<"the last value:"<<*rit<<endl;

  for(rit = vec.rbegin();rit!=vec.rend();rit++){
    cout<<"the value:"<<*rit<<endl;
  }


  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值