嵌套容器(堆栈容器的列表容器)

C++ - Nested containers (list container of stack containers)

本文关键字:列表 嵌套 堆栈      更新时间:2023-10-16

我想使用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值之后。这将导致运行时问题。