STL--栈(stack)

在这里插入图片描述
stack 栈是一种只在一端(栈顶)进行数据插入(入栈)和删除(出栈)的数据结构,它满足后进先出(LIFO)的特性。
使用push(入栈)将数据放入stack,使用pop(出栈)将元素从容器中移除。

在这里插入图片描述

使用stack,必须包含头文件:

#include<stack>

在头文件中,class stack定义如下:

namespace std{
    template <typename T,
    typename Container = deque<T>>
    class stack;
}

第一个参数T代表类型,第二个参数用来定义stack内部存放数据的容器,默认为deque。之所以选择deque而非vector,是因为deque移除数据时可能会释放内存,并在插入数据需要扩容时不需要复制所有的数据。
例如,以下定义了一个元素类型为整数的 stack:

std::stack<int> st;

stack 只是很单纯地把各项操作转化为内部容器对应的函数调用。你可以使用任何支持 back()、push_back()和pop_back()成员函数的标准容器支持 stack。例如你可以使用 vector或list 来存放数据:

stack<int,vector<int>> st;//整型栈,使用vector存放数据
注意:forword_lis和array不可以作为其容器

定义及初始化


#include <iostream>
#include <stack>
#include <vector>
#include <list>
using namespace std;

int main()
{
    stack <char> s1;//创建一个默认的栈,最常用

    stack <char, deque<char> > s2;//显示创建用deque保存数据的栈,和s1等价

    stack <int, vector<int> > s3;//创建用vector保存数据的栈

    stack <int, list<int> > s4;//创建用list保存数据的栈

    return 0;
}

empty成员函数
判断栈是否为空。

pop成员函数
出栈函数,删除栈顶元素。

push成员函数
入栈函数,往栈顶添加数据

size成员函数
返回栈的数据个数

top成员函数
返回栈顶元素的引用。

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    stack<int>s1;//创建一个空的int栈
    if (s1.empty())
        cout << "s1是空的" << endl;

    for(int i=0;i<5;i++)//入栈0,1,2,3,4
        s1.push(i);
    cout << "入栈0~4后,栈内的数据个数:" << s1.size() << endl;

    cout << "出栈:" << endl;
    while (!s1.empty())//只要栈不空,循环继续
    {
        cout << s1.top() << endl;//输出栈顶元素的值
        s1.pop();//出栈,删除栈顶元素的值
    }

    return 0;
}

本篇完!

相关推荐

  1. STLstack

    2024-07-10 15:38:02       46 阅读
  2. 数据结构---(Stack)

    2024-07-10 15:38:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 15:38:02       51 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 15:38:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 15:38:02       44 阅读
  4. Python语言-面向对象

    2024-07-10 15:38:02       55 阅读

热门阅读

  1. ThreadLocal的内存泄漏

    2024-07-10 15:38:02       21 阅读
  2. 【软件工程中的演化模型及其优缺点】

    2024-07-10 15:38:02       21 阅读
  3. Linux 例题及详解

    2024-07-10 15:38:02       23 阅读
  4. 金蝶云苍穹-插件开发(四)GPT开发相关插件

    2024-07-10 15:38:02       23 阅读
  5. Windows图形界面(GUI)-SDK-C/C++ - 应用程序结构

    2024-07-10 15:38:02       29 阅读
  6. MySQL 速记SQL语句(SQL语句学习)

    2024-07-10 15:38:02       20 阅读
  7. xformers版本与其依赖pytorch版本的对应关系

    2024-07-10 15:38:02       20 阅读
  8. C++线程安全队列

    2024-07-10 15:38:02       24 阅读