C++:迭代器介绍

资料来源:《C++ Primer》、博客随笔

一、什么是迭代器

  • 迭代器是一种检查容器内元素并遍历元素的数据类型
  • 是 C++ 程序中常用的一种设计模式,它最重要的作用是为访问容器提供了统一的接口。
  • 我们希望容器提供一个访问元素的统一接口,从而复用操作函数,这个接口就是迭代器
  • C++ STL 有许多容器,例如 string、vector、list、deque、map、unordered_map 

介绍始终是介绍,所以下面的内容仅限于string与vector的基础知识,其他的以后再单独开贴总结。

二、使用迭代器

使用迭代器可以访问某个容器里的某个元素,迭代器也能从一个元素移动到另一个元素,类似指针,提供了对对象的间接访问。

auto b = v.begin(), e = v.end();  //让b表示v的第一个元素,e表示v的尾元素的下一位置

//end成功返回的迭代器被称作尾后迭代器
//如果v为空,那么begin跟end返回同一个迭代器
//上面的例子没有实际意义,只是为了让我们理解简单的迭代器是什么含义

(1)迭代器运算符

*iter                               返回迭代器iter所指元素的引用 

     解引用(*)的迭代器必须是合法并确实指着某个元素的,试图解引用一个非法迭代器或者尾后迭代器都是未被定义行为 

iter ->mem                    解引用iter并获取该元素名为mem的成员,等价于(*iter).mem

++iter                           令iter指示容器中的下一个元素

--iter                            令iter指示容器中的上一个元素

 iter1 == iter2              判断两个迭代器是否相等(不想等),如果两个迭代器指示的是同一个元素或者他们是同一个容器             iter1 !=  iter2              的尾后迭代器,则相等;反之,不相等

//例子:将第开头第一个字母改为大写字母

string s("badbaye!");
if( s.begin() != s.end() )        //遍历整个字符串,确保s非空
{
    auto it = s.begin();          //将第一个字符赋值给it
    *it = toupper(*it);           //将当前第一个字符改为大写
}

 (2)将迭代器从一个元素移动到另外一个元素

迭代器使用递增(++)运算符,从一个元素移动到下一个元素。简单来说跟整数递增类似,整数是在基础上加1,而迭代器是向前移一

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值