首页 > 编程知识 正文

vector容器迭代器代码,容器算法迭代器

时间:2023-05-03 19:03:21 阅读:190994 作者:285

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,该地址收到访问权限的限制,因此就会报错。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。