有关于iterator类的问题
是的是的,我知道每个容器类中都包含有属于它自己的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指针给了它?
可我在看实现代码时候并未看到.
请给予我正解.谢谢.