栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

C++中容器迭代器解引用运算符

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++中容器迭代器解引用运算符

1 简介

在C++中,用“*”表示解引用运算符。在《C++中容器迭代器的基本使用方法1》中提到,迭代器的ptr变量实际上就是一个指针,该指针指向了迭代器表示的元素。因此,在容器迭代器中使用解引用运算符,与在指针上使用解引用运算符类似,其的作用是返回该迭代器所指元素的引用。

2 使用

使用解引用运算符的代码如图1所示。

图1 使用解引用运算符

此时,*it_begin表示对迭代器it_begin进行解引用运算,其值是it_begin指向的元素,此时变量i的值是0。

还可以通过解引用运算符改变容器中的元素值,如图2所示。

图2 通过解引用运算符改变容器中的元素值

图2中的代码,将向量v1的第一个值修改为10,如图3所示。

 

图3 v1的内存数据

从图3中可以看出,0x005A59C8(图3①)是向量v1的第一个元素的地址,此时其内存中的数据已经被修改为0x0000000a(图3②),即10。

3 注意事项

不能对非法的迭代器和尾后迭代器进行解引用操作。如图4所示。

 

图4 对尾后迭代器进行解引用

其中,it_end是向量v1的尾后迭代器,对于尾后迭代器的解释,请参考《C++中容器迭代器的基本使用方法1》。对尾后迭代器进行解引用操作后,将其值保存在变量i中。运行程序,此时会弹出如图5所示的错误信息。

图5 错误信息

从图5中可以看出错误信息是“不能够解引用操作范围的向量迭代器”。其主要原因是,从图3③中可以看出,it_end的ptr的值是0xfdfdfdfd,对it_end解引用,实际上就是要访问内存中的0xfdfdfdfd,该地址收到访问权限的限制,因此就会报错。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467847.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号