关于vs2019 c++ STL 中容器的迭代器的 -> 运算符的使用,以 list 双向链表为例

(1)如下的结构体 A ,若有指针 p = new A() ;则可以使用 p->m , p->n 解引用运算符。
struct A { int m ; int n; }

对于 STL 中提供的迭代器,提供了类似于指针的功能。对迭代器也可以使用 -> 运算符来访问容器中元素对象里的成员。这个功能是由 STL 库大师的源代码实现的,如下图(以 list 容器的迭代器为例):

(2)那么 函数 pointer_to 做了哪些事情呢?以下给出其源码:

可见 ,pointer_to 只是解析了其形参的内存地址。对于全局函数 addressof 就不再展开了,见名知意,就是求形参的地址。

这也符合我们对指针的理解。只要通过指针拿到了对象的首地址,就可以用偏移量来访问类对象中的各个数据成员和函数。

(3)以下给出简单例子的反汇编,看看实际上代码是否是沿以上分析的执行路径:

对应的反汇编代码如下:

在调试中执行反汇编代码,按 F10 ,得输出结果如下:

再来一幅:

谢谢阅读

相关推荐
深思慎考1 小时前
RabbitMQ 入门:基于 AMQP-CPP 的 C++ 实践指南与二次封装
开发语言·c++·分布式·rabbitmq·api
深思慎考1 小时前
Ubuntu 系统 RabbitMQ 安装指南与使用(含 C++ 客户端与 SSL 错误解决)
c++·ubuntu·rabbitmq·github·rabbitmqpp
草莓熊Lotso2 小时前
《C++ Web 自动化测试实战:常用函数全解析与场景化应用指南》
前端·c++·python·dubbo
东巴图2 小时前
分解如何利用c++修复小程序的BUG
开发语言·c++·bug
祁同伟.2 小时前
【C++】二叉搜索树(图码详解)
开发语言·数据结构·c++·容器·stl
恒者走天下2 小时前
AI智能网络检测项目(cpp c++项目)更新
开发语言·c++
怀揣小梦想3 小时前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
努力努力再努力wz3 小时前
【C++进阶系列】:万字详解unordered_set和unordered_map,带你手搓一个哈希表!(附模拟实现unordered_set和unordered_map的源码)
java·linux·开发语言·数据结构·数据库·c++·散列表
加油=^_^=3 小时前
【C++】哈希表
数据结构·c++·散列表
对纯音乐情有独钟的阿甘3 小时前
【C++庖丁解牛】哈希表/散列表的设计原理 | 哈希函数
c++·哈希算法·散列表