我想使用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;
}
我得到的错误是间接非法的,'<<'对于最后第二行的class是非法的。有什么问题吗?谢谢。
你想让你的行读起来像这样:
cout << (*it).top() << endl;
您在解引用该值而不是指向该值的指针。注意,我把->
变成了.
具体来说,"it"本质上是一个指向你的值的指针,而"*it"给了你这个值,所以当你想要访问这个值的成员时,你需要一个.
而不是->
更新:另外,正如其他人指出的那样,有一个缺失;在push操作之后,你只向列表中添加了一个元素,然后对迭代器进行自增,这将你定位在列表的末尾,在1值之后。这将导致运行时问题。