C++栈

在计算机科学中,我们处理各种各样的程序。每个程序都有自己的领域和用途。根据程序创建的目的和环境,我们可以选择许多不同的数据结构。其中之一就是“栈”。在讨论这种数据类型之前,让我们先看一下它的语法。

语法

template<class T, class Container = deque<T> > class stack; 

这种数据结构基于后进先出(LIFO)的原则。最先插入的元素将在最后被提取,以此类推。有一个称为“top”的元素,它是最上面的元素。在栈中,所有的插入和删除操作都是在顶部元素上进行的。

栈在应用领域中被作为容器适配器使用。

容器应支持以下操作列表: Advertisement

  • empty:判断栈是否为空。
  • size:返回栈中元素的数量。
  • back:返回栈顶元素的引用。
  • push_back:将元素插入栈顶。
  • pop_back:删除栈顶的元素。

模板参数

T:该参数指定容器适配器所保存的元素类型。

Container:该参数指定一个内部容器对象,用于保存栈中的元素。

成员类型

以下是栈的成员类型及其简要描述。

成员类型描述
value_type指定元素类型。
container_type指定底层容器类型。
size_type指定元素的大小范围。

函数

函数可以帮助我们在编程领域中操作对象或变量。栈提供了许多可以在程序中使用或嵌入的函数。下面是一些常用的函数列表:

函数描述
(构造函数)用于构造栈容器。
empty用于检查栈是否为空。如果栈为空,返回true;否则返回false。
size返回栈容器的大小,即栈中存储的元素数量。
top用于访问栈顶元素。栈顶元素在操作中起着非常重要的作用,因为所有的插入和删除操作都是在栈顶元素上进行的。
push用于在栈顶插入新元素。
pop用于删除栈顶元素,即从栈中删除元素。
emplace用于在当前栈顶元素之上插入新元素。
swap用于交换两个容器的内容。 关系运算符:非成员函数,用于栈的比较运算。
uses allocator<stack>非成员函数,使用分配器来管理栈的内存。

示例:一个简单的程序展示了基本栈函数的使用。

#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

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想