有关于iterator类的问题

robbie24 robbie24 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
是的是的,我知道每个容器类中都包含有属于它自己的iterator类(且是nested class),虽然它们的内部实现各不相同,我也知道为了能够使iterator中的member function能够拥有访问容器类底层data member的权限,必须是给予它friend的修饰.
可是,有个问题始终困扰着我.
比如说
vector<int> ivec,ivec1,ivec2;
...//假定已经插入了一些数据
vector<int>::iterator it=ivec.begin();
cout<<*it;
我的问题有了,it是iterator的对象(准确的说是容器类vector<int>中的iterator类的对象),而vector的member function begin()是返回一个索引值给it.并且根据索引值,显示出ivec当前索引下包含的一个值来.
那么当我对it做"*it"的操作的时候,编译器怎么知道我调用的是对象ivec的低层的data member做索引求值,而不是ivec1,ivec2或者其他的vector<int>的对象呢?各个对象所维护的data member都是它自己本身的.
难道说在对象it的构造过程中将对象ivec的this指针给了它?
可我在看实现代码时候并未看到.
请给予我正解.谢谢.
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
robbie24
C++ 语言 65,214 成员 250,514 内容