![]() |
#2
rjsp2022-11-01 17:10
|
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
我想问的是:
1、第1张图,红色框框柱的第2行是不是就是这个迭代器类本身换了个self的名字?那第1行是什么东西?怎么又出来个iterator?
2、第2张图,最下面红色框框柱的operator->()函数居然没有参数,->不应该是双目运算符么,类内默认有个this隐藏了,那还有个右参数怎么不写?
3、第2张图,最下面红色框框柱的operator->()函数为什么返回的是一个指针?返回什么不是看后面接的是data还是next吗?我看->重载的实现是直接调用*的重载然后返回data的地址。这个->运算符和迭代器搭配怎么使用?我下面的代码报错了

#include<iostream>
#include<list>
using namespace std;
int main(){
list<int> ls;
ls.push_back(3);
ls.push_back(2);
auto iter = ls.begin();
cout<<*iter<<endl;//3
cout<<iter->node<<endl;//报错
cout<<iter->node->next<<endl;//报错
cout<<iter->node->data<<endl;//报错
return 0;
}
上面3个错都是[Error] request for member 'node' in '* iter.std::_List_iterator<int>::operator->()', which is of non-class type 'int'.
网上不是没有就是搜出来的感觉不是我想要问的,故发此贴,希望大佬解答一下,谢谢!