有关于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指针给了它?
可我在看实现代码时候并未看到.
请给予我正解.谢谢.
可是,有个问题始终困扰着我.
比如说
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指针给了它?
可我在看实现代码时候并未看到.
请给予我正解.谢谢.
...全文
相关推荐
使用Iterator模式将对象转成String.docx
为了解决这个问题,作者引入了Iterator模式,通过遍历对象生成易于理解和调试的字符串表示。
PHP迭代器接口Iterator用法分析
### 总结:PHP中的Iterator接口提供了一种优雅的方式来处理集合的迭代问题,它允许开发者控制如何遍历集合,同时提供了一组标准化的方法来完成这一任务。
java集合_浅谈Iterable和Iterator的区别
这样,即使在并发环境中,多个线程同时遍历同一个集合,也不会导致数据不一致的问题。
使用Iterator模式将对象转成String (2).docx
**ObjectIterator**:这个类实现了Iterator模式,用于迭代对象的属性。它不仅处理Java bean的属性,还支持集合、数组和Map等数据结构的迭代。
关于方法iterator()找不着的问题~~~~~
当你遇到“方法iterator()找不着的问题”时,这通常意味着你在尝试使用`iterator()`时遇到了错误,可能是由于以下几个原因:1.


