C++ 标准模板库 - <stack>
简介
堆栈是一种设计用于在 LIFO(后进先出)上下文中运行的数据结构。 在堆栈中,元素被插入以及仅从一端移除。
Stack 类是容器适配器。 容器是保存相同类型数据的对象。 可以从不同的序列容器创建堆栈。如果未提供容器,则使用默认的 deque 容器。 容器适配器不支持迭代器,因此我们不能将它们用于数据操作。但是它们分别支持 push() 和 pop() 成员函数用于数据插入和删除。
定义
下面是来自 <stack> 头文件的 std::stack 定义
template <class T, class Container = deque<T> > class stack;
参数
T − 包含的元素的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
Container − 基础容器对象的类型。
成员类型
以下成员类型可以用作成员函数的参数或返回类型。
序号 | 成员类型 | 定义 |
---|---|---|
1 | value_type | T (First parameter of the template) |
2 | container_type | Second parameter of the template |
3 | size_type | size_t |
4 | reference | value_type& |
5 | const_reference | const value_type& |
<stack> 中的函数
下面是来自 <stack> 标头的所有方法的列表。
构造函数
序号 | 方法 & 说明 |
---|---|
1 | stack::stack default constructor 构造一个空的堆栈对象,其元素为零。 |
2 | stack::stack copy constructor 构造一个堆栈,其中包含另一个堆栈中存在的每个元素的副本。 |
3 | stack::stack move constructor 使用移动语义构造具有其他内容的堆栈。 |
析构函数
序号 | 方法 & 说明 |
---|---|
1 | stack::~stack
通过释放容器内存来销毁堆栈。 |
成员函数
序号 | 方法 & 说明 |
---|---|
1 | stack::emplace
在栈顶构造并插入新元素。 |
2 | stack::empty
测试堆栈是否为空。 |
3 | stack::operator= copy version 通过替换旧内容将新内容分配给堆栈。 |
4 | stack::operator= move version 通过替换旧内容将新内容分配给堆栈。 |
5 | stack::pop
从堆栈中移除顶部元素。 |
6 | stack::push copy version 在栈顶插入新元素。 |
7 | stack::push move version 在栈顶插入新元素。 |
8 | stack::size
返回堆栈中存在的元素总数。 |
9 | stack::swap
将堆栈的内容与另一个堆栈的内容交换。 |
10 | stack::top
返回对栈顶元素的引用。 |
非成员重载函数
序号 | 方法 & 说明 |
---|---|
1 | operator==
测试两个堆栈是否相等。 |
2 | operator!=
测试两个堆栈是否相等。 |
3 | operator<
测试第一个堆栈是否小于其他堆栈。 |
4 | operator<=
测试第一个堆栈是否小于或等于其他堆栈。 |
5 | operator>
测试第一个堆栈是否大于其他堆栈。 |
6 | operator>=
测试第一个堆栈是否大于或等于其他堆栈。 |
7 | swap
交换两个堆栈的内容。 |