C++primer 3.3 标准库 迭代器 iterator

一、迭代器简介

二、 #const_iterator容器类型

三、迭代器的算术运算

一、迭代器简介

  1. 除了用下标来访问vector对象的元素外,还可以通过迭代器;
  2. 迭代器是一种检查容器内元素并遍历元素的数据类型,一般遍历元素都用迭代器,少数容器用下标操作;
  3. 标准库为每一种标准容器定义了一种迭代器类型。
  4. 迭代器iterator定义
    1. vector<int>::iterator iter
    2. begin 和end操作

      for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++)
    3. end 操作返回的迭代器并不指向vector中任何实际元素,它只是起到一个哨兵的作用,表示我们已经处理完vector中所有元素。
  5. vector迭代器的解引用运算: *iter=0

二、const_iterator容器类型

  1. 每种容器类型定义了一种名为const_iterator的类型,该类型只能用于读取容器内的元素,不能改变值。
  2. 当我们对iterator类型解引用时,得到对某个元素的非const引用。如果我们对const_iterator类型解引用,则可以得到一个指向const对象的引用。
 for(vector<string>::const_iterator iter=ivec.begin();iter!=ivec.end();)
{ cout<<*iter<<endl;
  *iter="" //错误,只能读操作
  iter++;  //可以
}
  1. 使用 const_iterator类型时,我们可以得到一个迭代器,它自身值可以改变,但不能改变其所指向的元素的值。
  2. 不要把const_iterator和const的iterator对象混淆起来。声明一个const迭代器时,必须初始化迭代器,一旦初始化,不能改变(const迭代器没有什么用)

三、迭代器的算术运算

  1. 自增自减运算 iter++;
  2. iter + n
  3. 计算两个迭代器对象的距离:iter1 - iter2 ,该距离是名为difference_type的值,这里的difference_type是signed类型。
  4. 注意迭代器相减可以,但是不能相加,相加操作是未定义的,会出现编译错误
    如下例
  5. 指向中间的元素:
vector<int>::iterator mid=vi.begin()+vi.size()/2;
vector<int>::iterator mid=(vi.begin()+vi.size())/2;//这个是错误的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值