我想使用STL创建一个堆栈对象的链表。我的代码是这样的:
int main() {
stack<int> s1;
list<stack<int>> ll;
s1.push(0)
ll.push_back(s1);
auto it = ll.begin();
it++;
cout << *it->top() << endl;
return 0;
}我得到的错误是非法的间接寻址和倒数第二行的类的'<<‘非法。问题出在哪里?谢谢。
发布于 2016-09-17 10:01:51
您希望您的代码行如下所示:
cout << (*it).top() << endl;您正在取消引用该值,而不是指向该值的指针。请注意,我将->更改为.,具体内容是'it‘本质上是一个指向您的值的指针,而'*it’提供了该值,因此当您想要访问该值的成员时,您需要一个.而不是->
更新:另外,正如其他人所指出的,在推送之后,您只向列表中添加了一项,然后递增迭代器,从而将您定位在列表末尾的一个值之后。这将导致您的运行时问题。
https://stackoverflow.com/questions/39542072
复制相似问题