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

举报
人才程序员 发表于 2023/08/29 12:11:28 2023/08/29
738 0 0
【摘要】 @TOC 前言在C++的标准模板库(STL)中,stack(栈)是一个容器适配器,它提供了一种后进先出(LIFO)的数据结构。栈是一种简单但常用的数据结构,它在很多场景中都有广泛的应用。本文将介绍stack的基本概念和常用操作,帮助初学者快速入门使用C++ STL中的stack。 一、stack元素访问 1.1 元素访问之top原型:value_type& top()功能:返回栈顶元素的引用...

@TOC


前言

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


一、stack元素访问

1.1 元素访问之top

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

#include <iostream>
#include <stack>

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;
}

在这里插入图片描述

输出:

Top element: 30

二、stack修改

2.1 stack修改之push()函数

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

#include <iostream>
#include <stack>

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;
}

在这里插入图片描述

输出:

Stack size after push operations: 3

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

2.2 stack修改之pop()函数

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

#include <iostream>
#include <stack>

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;
}

在这里插入图片描述

输出:

Stack size after pop operation: 2

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

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

#include <iostream>
#include <stack>

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;
}

在这里插入图片描述

输出:

Stack 1 size: 2
Stack 2 size: 3

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

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

#include <iostream>
#include <stack>
#include <string>

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;
}

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

输出:

Stack size: 2
Top element: World!

总结

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

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

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

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

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

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

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

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

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

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

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。