答案 0 :(得分:4)
std::stack
有一个模板参数Container
,它必须是一个可以存储T
类型元素的容器(也就是说,堆栈元素的类型) )。此容器必须具有back()
,push_back()
和pop_back()
函数,标准容器vector
,deque
和list
均满足要求
因此,无论用户指定哪种容器类型,std::stack
的结果实例化都是一个类:
Container<T>
类型的数据成员(或者非常类似的东西,如果不是字面上的数据成员。我想它可能是一个私有基类。)push_back()
,push()
。pop_back()
,pop()
。简而言之,std::stack<T>
是一个包装std::deque<T>
实例的对象,隐藏了大部分deque
的功能,以便呈现更简单的界面仅用作后进先出(LIFO)队列。类似地,std::queue
表示FIFO队列。
答案 1 :(得分:4)
stack
是一个适配器,它使用另一个容器作为底层存储,并将函数push
,pop
,emplace
等链接到底层的相关函数容器。
默认情况下,std::stack
使用std::deque
作为基础容器。但您可以指定自己的,例如std::stack<T, std::vector<T>> s;
。
有关详细信息,请参阅cppreference。