std::
stack
类模板 <stack>
template <class T, class Container = deque<T> > class stack;
后进先出栈
栈是一种容器适配器类型,专为在后进先出场景中操作而设计,在这种场景中,只从容器的一端插入和提取元素。
栈是作为容器适配器实现的,容器适配器是使用特定容器类的封装对象作为底层容器的类,
提供一组特定的成员函数来访问其元素。元素从特定容器的“back”被pushed/popped,这被称为栈的顶部。
底层容器可以是任何标准容器类模板或其他一些专门设计的容器类。容器应支持以下操作:
-
empty
-
size
-
back
-
push_back
-
pop_back
标准容器类vector、deque和list满足这些要求。默认情况下,
如果没有为特定的栈类实例化指定容器类,则使用标准容器deque。
☲ 模板参数
-
T
-
所包含元素的类型。
别名为成员类型 stack::value_type。
-
Container
-
存储元素的内部基础容器对象的类型。
其value_type应为T。
别名为成员类型stack::container_type。
☉ 成员类型
C++98:
成员类型 |
定义 |
注释 |
value_type |
起始模板参数(T) |
元素类型 |
container_type |
第二个模板参数(Container) |
基础容器的类型 |
size_type |
无符号整型 |
通常与size_t相同 |
C++11:
成员类型 |
定义 |
注释 |
value_type |
起始模板参数(T) |
元素类型 |
container_type |
第二个模板参数(Container) |
基础容器的类型 |
reference |
container_type::reference |
通常,value_type& |
const_reference |
container_type::const_reference |
通常,const value_type& |
size_type |
无符号整型 |
通常与size_t相同 |
☞ 成员函数
☣ 非成员函数重载
非成员类特化:
uses_allocator<stack> |
为栈使用分配器(类模板) |