【C++】STL——stack的介绍和使用、stack的push和pop函数介绍和使用、stack的其他成员函数

文章介绍了C++标准库中的stack数据结构,它是一种后进先出(LIFO)的容器适配器,主要操作包括构造函数、empty()检查空栈、size()获取元素数量、top()获取栈顶元素引用、push()压入元素和pop()弹出元素。示例代码展示了如何创建和操作stack对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

  • 1.stack的介绍
  • 2.stack的使用
    • 2.1stack构造函数
    • 2.2stack成员函数
      • (1)empty() 检测stack是否为空
      • (2)size() 返回stack中元素的个数
      • (3)top() 返回栈顶元素的引用
      • (4)push() 将元素val压入stack中
      • (5)pop() 将stack中顶部的元素弹出

1.stack的介绍

stack的介绍

在这里插入图片描述

  1.stack是一种容器适配器,专门用在具有先进后出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。

  2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素。

  3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:
  empty:判空操作
  back:获取顶部元素操作
  push_back:顶部插入元素操作
  pop_back:顶部删除元素操作

  4. 标准容器vector、deque、list均符合这些需求,默认情况下,如果没有为stack指定特定的底层容器,默认情况下使用deque。

在这里插入图片描述

2.stack的使用

在这里插入图片描述

2.1stack构造函数

在这里插入图片描述
在这里插入图片描述
  stack类是一个容器适配器,它是基于其他容器类型(默认情况下是deque)实现的。stack类提供了一种先进后出(LIFO)的数据结构,类似于真实生活中的堆栈。

#include <iostream>
#include <stack>
#include <vector>

int main() {
    // 示例1:使用默认构造函数创建一个空的stack对象。
    std::stack<int> myStack;

    // 示例2:使用拷贝构造函数创建一个与现有stack对象相同的新对象。
    std::stack<int> otherStack;
    otherStack.push(1);
    otherStack.push(2);
    std::stack<int> newStack(otherStack);

    // 示例3:使用构造函数模板创建一个基于vector的stack对象。
    std::stack<int, std::vector<int>> intStack;
    intStack.push(10);
    intStack.push(20);

    // 输出示例2中新创建的stack对象的元素
    std::cout << "示例2中新创建的stack对象的元素:";
    while (!newStack.empty()) {
        std::cout << newStack.top() << " ";
        newStack.pop();
    }
    std::cout << std::endl;

    // 输出示例3中基于vector的stack对象的元素
    std::cout << "示例3中基于vector的stack对象的元素:";
    while (!intStack.empty()) {
        std::cout << intStack.top() << " ";
        intStack.pop();
    }
    std::cout << std::endl;

    return 0;
}

//示例2中新创建的stack对象的元素:2 1 
//示例3中基于vector的stack对象的元素:20 10 

2.2stack成员函数

(1)empty() 检测stack是否为空

  empty()是stack类的一个成员函数,用于检查当前的stack是否为空。当stack中没有任何元素时,empty()函数返回true;当stack中至少有一个元素时,empty()函数返回false。

  empty()函数的使用非常简单,只需在一个stack对象上调用该函数即可。以下是empty()函数的用法示例:

#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack;

    // 检查stack是否为空
    if (myStack.empty()) {
        std::cout << "Stack is empty" << std::endl;
    } else {
        std::cout << "Stack is not empty" << std::endl;
    }

    // 将元素压入stack
    myStack.push(10);
    myStack.push(20);

    // 再次检查stack是否为空
    if (myStack.empty()) {
        std::cout << "Stack is empty" << std::endl;
    } else {
        std::cout << "Stack is not empty" << std::endl;
    }

    return 0;
}

//Stack is empty
//Stack is not empty

(2)size() 返回stack中元素的个数

  size()是stack类的一个成员函数,用于获取当前stack中的元素数量。size()函数返回一个整数,表示stack中的元素数目。

  size()函数的使用非常简单,只需在一个stack对象上调用该函数即可。以下是size()函数的用法示例:

#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack;

    // 添加元素到stack
    myStack.push(10);
    myStack.push(20);
    myStack.push(30);

    // 获取stack中的元素数量
    int stackSize = myStack.size();
    std::cout << "Stack size: " << stackSize << std::endl;

    // 弹出一个元素
    myStack.pop();

    // 再次获取stack中的元素数量
    stackSize = myStack.size();
    std::cout << "Stack size after pop: " << stackSize << std::endl;

    return 0;
}

//Stack size: 3
//Stack size after pop: 2

(3)top() 返回栈顶元素的引用

  top()是stack类的一个成员函数,用于获取stack顶部(即最后压入的)的元素的值,而不会将该元素从stack中移除。

  top()函数的使用非常简单,只需在一个stack对象上调用该函数即可。以下是top()函数的用法示例:

#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack;

    // 添加元素到stack
    myStack.push(10);
    myStack.push(20);
    myStack.push(30);

    // 获取stack顶部的元素值
    int topElement = myStack.top();
    std::cout << "Top element: " << topElement << std::endl;

    return 0;
}

//Top element: 30

(4)push() 将元素val压入stack中

  push()是stack类的一个成员函数,用于将一个元素压入(即添加)到stack的顶部。

  push()函数的使用非常简单,只需在一个stack对象上调用该函数并传递要压入的元素作为参数即可。以下是push()函数的用法示例:

#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack;

    // 将元素压入stack
    myStack.push(10);
    myStack.push(20);
    myStack.push(30);

    // 获取stack顶部的元素值
    int topElement = myStack.top();
    std::cout << "Top element: " << topElement << std::endl;

    return 0;
}

//Top element: 30

(5)pop() 将stack中顶部的元素弹出

  pop()是stack类的一个成员函数,用于移除stack顶部(即最后压入的)的元素,但并不返回该元素的值。

  pop()函数的使用非常简单,只需在一个stack对象上调用该函数即可。以下是pop()函数的用法示例:

#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack;

    // 添加元素到stack
    myStack.push(10);
    myStack.push(20);
    myStack.push(30);

    // 移除stack顶部的元素
    myStack.pop();

    // 获取新的stack顶部的元素值
    int topElement = myStack.top();
    std::cout << "Top element after pop: " << topElement << std::endl;

    return 0;
}

//Top element after pop: 20
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鳄鱼麻薯球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值