C++ STL 之stack

目录

1.stack的定义

2.stack的常用函数

 3.stack的常见用途

4.几点说明


1.stack的定义

stack翻译为栈,是STL中实现的一个先进后出,后进先出的容器。它只有一个出口,只能操作最顶端元素。 

C++ STL 之stack_第1张图片C++ STL 之stack_第2张图片

1.1头文件

要使用stack,应先添加头文件#include,并在头文件下面加上“using namespace std;”然后就可以使用了。

#include 

1.2定义形式

stack name; 
//typename可以是任意基本数据类型或容器

stacks;
stacks;
stacks; //node是结构体类型

2.stack的常用函数

代码 含义
push( )

向栈压入一个元素 a(s.push(a); )

pop( )

移除栈顶元素(s.pop(); )

top( ) 返回栈顶元素值 (s.top() )

empty( )

返回bool型,表示栈内是否为空 (s.empty() )

[true为空,false为非空 ]

size( )

返回栈内元素个数 (s.size() )

示例如下:

#include 
#include 
using namespace std;
int main()
{  stacks;
   for(int i=1;i<=5;i++)
     {s.push(i);}  //push(i)将i压入栈,故此处以此入栈1 2 3 4 5
   cout<<"Top:"<

输出结果:

C++ STL 之stack_第3张图片

 3.stack的常见用途

       stack常用来模拟一些递归,防止程序对栈内存的限制而导致程序出错。一般来说,程序的栈内存空间很小,对有些题目来说,如果用普通的函数来进行递归一旦递归层数过深(不同机器不同,约几千至几万层),则会导致程序运行崩溃如果用栈来模拟递归算法的实现可以避免这一方面的问题(不过这种应用出现较少)。【此处摘抄自《算法笔记》】

4.几点说明

4.1 stack没有迭代器

       stack具有先进后出的特点,只能对栈顶元素进行操作。所以stack不提供遍历功能,也不提供迭代器。若想进行遍历,可以将栈中元素取出放在数组中。

主要代码:

stacks;
   int a[5],t=0;
   for(int i=1;i<=5;i++)
   { s.push(i);}
   while(t<5)
   {a[t++]=s.top();
   s.pop();}

4.2 stack赋值

stacks={1,2,3}; //error  stack不可以用一组数直接初始化
stacks(3);  //error stack不可以预先分配空间

vectorv={1,2,3};  // 栈中元素为1,2,3
stack>s1(v);

listl={1,2,3};
stack>s2(l);

dequed={1,2,3};
stack>s3(d);
stacks4(d);  //用deque为stack初始化时deque可省

你可能感兴趣的:(c++)