• 【C++STL基础入门】stack栈的增删查等操作的使用



    前言

    在C++的标准模板库(STL)中,stack(栈)是一个容器适配器,它提供了一种后进先出(LIFO)的数据结构。栈是一种简单但常用的数据结构,它在很多场景中都有广泛的应用。本文将介绍stack的基本概念和常用操作,帮助初学者快速入门使用C++ STL中的stack。


    一、stack元素访问

    1.1 元素访问之top

    原型:value_type& top()
    功能:返回栈顶元素的引用,但不删除该元素。
    参数:无。
    返回值:返回栈顶元素的引用。
    示例代码:

    #include 
    #include 
    
    int main() {
        std::stack<int> myStack;
        myStack.push(10);
        myStack.push(20);
        myStack.push(30);
    
        int topElement = myStack.top();
        std::cout << "Top element: " << topElement << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    输出:

    Top element: 30
    
    • 1

    二、stack修改

    2.1 stack修改之push()函数

    原型:void push(const value_type& value)
    功能:将元素压入栈顶。
    参数:要压入栈顶的元素的值。
    返回值:无。
    示例代码:

    #include 
    #include 
    
    int main() {
        std::stack<int> myStack;
    
        myStack.push(10);
        myStack.push(20);
        myStack.push(30);
    
        std::cout << "Stack size after push operations: " << myStack.size() << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    输出:

    Stack size after push operations: 3
    
    • 1

    函数用于将元素添加到容器的末尾。

    2.2 stack修改之pop()函数

    原型:void pop()
    功能:弹出栈顶元素,即删除栈顶元素。
    参数:无。
    返回值:无。
    示例代码:

    #include 
    #include 
    
    int main() {
        std::stack<int> myStack;
        myStack.push(10);
        myStack.push(20);
        myStack.push(30);
    
        myStack.pop();
    
        std::cout << "Stack size after pop operation: " << myStack.size() << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    输出:

    Stack size after pop operation: 2
    
    • 1

    2.3 stack修改之swap()交换函数

    原型:void swap(stack& other)
    功能:交换两个栈的内容。
    参数:另一个要交换的栈。
    返回值:无。
    示例代码:

    #include 
    #include 
    
    int main() {
        std::stack<int> stack1;
        stack1.push(10);
        stack1.push(20);
        stack1.push(30);
    
        std::stack<int> stack2;
        stack2.push(40);
        stack2.push(50);
    
        stack1.swap(stack2);
    
        std::cout << "Stack 1 size: " << stack1.size() << std::endl;
        std::cout << "Stack 2 size: " << stack2.size() << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    输出:

    Stack 1 size: 2
    Stack 2 size: 3
    
    • 1
    • 2

    2.4 stack修改之emplace()在顶部原位构造元素

    原型:template reference emplace(Args&&… args)
    功能:在栈顶原位构造一个元素。
    参数:要构造元素所需的参数。
    返回值:对新构造元素的引用。
    示例代码:

    #include 
    #include 
    #include 
    
    int main() {
        std::stack<std::string> myStack;
        myStack.emplace("Hello");
        myStack.emplace("World!");
    
        std::cout << "Stack size: " << myStack.size() << std::endl;
        std::cout << "Top element: " << myStack.top() << std::endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述
    它的目的是在容器中就地构造元素,而不是进行副本创建。

    输出:

    Stack size: 2
    Top element: World!
    
    • 1
    • 2

    总结

    本文介绍了C++ STL中的stack栈的基本概念和常用操作。stack是一个容器适配器,提供了一种后进先出(LIFO)的数据结构,非常适用于需要快速访问最近添加的元素的场景。

    通过使用头文件,我们可以轻松地创建一个栈对象,并通过一系列操作来管理栈中的元素。

    首先,我们可以使用push(element)函数将元素添加到栈的顶部。这意味着新的元素成为了最顶部,而之前添加的元素则往下移动。

    要从栈中移除栈顶元素,我们可以使用pop()函数。这会删除栈顶的元素,并使下面的元素成为新的栈顶。

    通过使用top()函数,我们可以访问栈顶元素的值,而不会删除它。这对于需要查看栈顶元素但不改变栈的结构的情况非常有用。

    我们还可以使用empty()函数来检查栈是否为空。如果栈为空,表示没有任何元素存在;如果栈不为空,意味着至少有一个元素存在。

    要获取栈中元素的数量,我们可以使用size()函数。它返回栈中当前的元素数量,帮助我们了解栈的大小。

    通过使用示例代码,我们演示了stack栈的基本操作。这个示例包括创建栈对象、添加元素、获取栈的大小、访问栈顶元素以及移除栈顶元素等操作。这有助于加深你对stack栈的理解并且可以用作参考。

    通过学习本文中介绍的内容,你现在应该对C++ STL中的stack栈有了较详细的了解。你可以利用stack栈来实现后进先出的数据结构,并根据具体的需求进行相应的增删查等操作。

    使用stack栈可以帮助我们更高效地管理数据,尤其在需要维护元素顺序并以最后添加的元素为主导的情况下,它是一个非常有用的工具。

    希望本文对您学习C++ STL中的stack栈有所帮助。祝愉快学习!

  • 相关阅读:
    HttpClient遭遇Connection Reset异常分析(浅析部分源码)
    【CIO人物展】黄淮学院副CIO周鹏:构建数智化平台赋能学校高质量发展
    实践致知第12享:如何新建一个Word并设置格式
    智慧公厕:优化城市环境品质的智慧选择
    github.com/holiman/uint256 源码阅读
    二叉搜索树
    游戏中交通工具的设计
    can网桥 canbridge can中继器、canbridge的优秀emc性能介绍
    GIS数据获取:土地利用与土壤属性、DEM、水体水系数据
    反虚拟机、反沙箱技术整理汇总
  • 原文地址:https://blog.csdn.net/m0_62599305/article/details/132434258