> 它与堆栈有何不同?,c++,c++11"/>

首页 > 解决方案 > 这个语句到底是什么意思> 它与堆栈有何不同?

问题描述

我不明白list<int>当我们声明 stack 时它做了什么stack<int, list<int> >。它不会改变我尝试过的。

标签: c++c++11

解决方案


stack不是容器,它是容器适配器。你告诉它要存储什么类型的元素以及存储它的容器。

它看起来大致是这样的:

template <typename T, typename Container = std::deque<T>>
class stack {
protected:
    Container c;
public:
    void push(T const& v) { c.push_back(v); }
    void pop() { c.pop_back(); }
};

如您所见,当您从 更改为stack<int>stack<int, list<int>>,您只是更改了底层容器存储。界面完全没有变化。但性能肯定会 -deque是一个...stack更好的选择list


推荐阅读