C++ 堆栈
在计算机科学中,我们致力于开发各种程序。他们每个人都有自己的域和实用程序。根据程序创建的目的和环境,我们有大量数据结构可供选择。其中之一是"堆栈"。在讨论这种数据类型之前,让我们看一下它的语法。
语法
template<class T, class Container = deque<T> > class stack;
此数据结构使用LIFO技术,其中LIFO代表后进先出。首先插入的元素将在末尾提取,依此类推。有一个称为"顶部"的元素,它是位于最高位置的元素。所有插入和删除操作都是在堆栈的顶部元素本身进行的。
应用程序区域中的堆栈隐含为容器适配器。
容器应支持以下操作列表:
empty
size
back
push_back
pop_back
模板参数
T : 该参数指定容器适配器将要保存的元素的类型。
容器: 该参数指定用于存放堆栈元素的容器内部对象。
成员类型
下面给出了堆栈成员类型的列表,并对其进行了简短描述。
会员类型 |
说明 |
value_type |
指定了元素类型。 |
container_type |
指定了底层容器类型。 |
size_type |
它指定元素的大小范围。 |
函数
借助函数,可以在编程领域中使用对象或变量。堆栈提供了大量可以在程序中使用或嵌入的功能。相同的列表如下:
功能 |
说明 |
(构造函数) |
该函数用于构建堆栈容器。 |
empty |
该函数用于测试堆栈是否为空。如果堆栈为空,则函数返回true,否则返回false。 |
size |
该函数返回堆栈容器的大小,它是对堆栈中存储的元素数量的度量。 |
top |
该函数用于访问堆栈的顶部元素。该元素起着非常重要的作用,因为所有插入和删除操作都是在顶部元素执行的。 |
push |
该函数用于在堆栈顶部插入新元素。 |
pop |
该函数用于删除元素,堆栈中的元素从顶部删除。 |
emplace |
该函数用于在当前顶部元素上方的堆栈中插入新元素。 |
swap |
该函数用于交换引用中两个容器的内容。 |
关系运算符 |
非成员函数指定堆栈所需的关系运算符。 |
allocator
|
顾名思义,非成员函数使用堆栈的分配器。 |
示例: 展示基本堆栈功能用法的简单程序。
#include <iostream>
#include <stack>
using namespace std;
void newstack(stack <int> ss)
{
stack <int> sg = ss;
while (!sg.empty())
{
cout << '\t' << sg.top();
sg.pop();
}
cout << '\n';
}
int main ()
{
stack <int> newst;
newst.push(55);
newst.push(44);
newst.push(33);
newst.push(22);
newst.push(11);
cout << "The stack newst is : ";
newstack(newst);
cout << "\n newst.size() : " << newst.size();
cout << "\n newst.top() : " << newst.top();
cout << "\n newst.pop() : ";
newst.pop();
newstack(newst);
return 0;
}
输出:
The stack newst is : 11 22 33 44 55
newst.size() : 5
newst.top() : 11
newst.pop() : 22 33 44 55