前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】STL 容器 - stack 堆栈容器 ② ( stack 堆栈容器常用 api 简介 | stack#push 函数 | emplace 函数 | top 函数 | pop 函数 )

【C++】STL 容器 - stack 堆栈容器 ② ( stack 堆栈容器常用 api 简介 | stack#push 函数 | emplace 函数 | top 函数 | pop 函数 )

作者头像
韩曙亮
发布2023-12-24 08:18:42
1370
发布2023-12-24 08:18:42
举报
文章被收录于专栏:韩曙亮的移动开发专栏
文章目录
  • 一、 stack 堆栈容器常用 api 简介
    • 1、栈顶插入元素 - stack#push 函数
    • 2、栈顶构造元素 - stack#emplace 函数
    • 3、获取栈顶元素 - stack#top 函数
    • 4、获取栈顶元素 - stack#pop 函数
    • 5、获取栈顶元素 - stack#empty 函数
  • 二、 代码示例
    • 1、代码示例
    • 2、执行结果

一、 stack 堆栈容器常用 api 简介


1、栈顶插入元素 - stack#push 函数

调用 stack 容器的 push 成员函数 , 可以在 堆栈容器的 栈顶插入一个元素 ;

stack#push 函数原型如下 :

代码语言:javascript
复制
void push(const value_type& val);

stack#push 函数 接受一个 常量引用参数 val , 这是要插入的元素 ;

将 val 元素压入栈顶 , 可能会 触发底层容器 的相应操作 , 如 : 分配内存等 ;

特别注意 : stack 堆栈容器 只能在 栈顶进行插入和删除元素的操作 , 不支持在 堆栈的 栈底 或 中部的位置 进行插入和删除操作 ;

2、栈顶构造元素 - stack#emplace 函数

调用 stack 容器的 emplace 成员函数 , 可以直接在 栈顶 构造元素 ;

使用 stack#emplace 函数 向 栈顶添加元素 的优点是 避免了 不必要的 拷贝 或 移动 操作 , 提高了函数的性能 和 执行效率 ;

stack#emplace 函数原型如下 :

代码语言:javascript
复制
void emplace(const value_type& val);

stack#emplace 函数 接受一个 常量引用参数 val , 可以根据该参数的值在栈顶直接构造一个元素 ;

特别注意 : stack 堆栈容器 只能在 栈顶进行插入和删除元素的操作 , 不支持在 堆栈的 栈底 或 中部的位置 进行插入和删除操作 ;

3、获取栈顶元素 - stack#top 函数

调用 stack 容器的 top 成员函数 可以 获取栈顶元素 , 但不删除该元素 , 该元素仍然在 栈顶 , 只是读取 栈顶元素的值 ;

stack#top 函数原型如下 :

代码语言:javascript
复制
const_reference top() const;

该函数返回的是一个 常量引用 , 该引用返回值表示栈顶元素的值 ;

由于 stack 的存取机制是 后进先出 , 最后插入的元素将位于栈顶 , 可以通过调用 top 函数 获取 栈顶元素引用 来查看栈顶元素的值 , 同时不会影响栈的元素结构 ;

4、获取栈顶元素 - stack#pop 函数

stack 容器的 pop 成员函数 用于删除栈顶的元素 , 该操作不会获取栈顶元素 , 只能删除 ;

stack#pop 函数原型如下 :

代码语言:javascript
复制
void pop();

该函数没有参数 , 也没有返回值 , 其作用是 删除栈顶的元素 , 并减小栈的大小 ;

5、获取栈顶元素 - stack#empty 函数

调用 stack 容器的 empty 成员函数 可以检查栈是否为空 ;

stack#empty 函数原型如下 :

代码语言:javascript
复制
bool empty() const;
  • 函数参数 : 该函数没有参数 ;
  • 函数返回值 : 该函数返回一个布尔值 , 表示栈是否为空 ;
    • 如果栈为空 , 则返回 true ;
    • 如果栈不为空 , 否则返回 false ;

二、 代码示例


1、代码示例

代码示例 :

代码语言:javascript
复制
#include "iostream"
using namespace std;
#include "stack"

int main() {

    // 创建 stack 堆栈容器对象
    std::stack<int> s;

    // 入栈操作 , 插入元素 
    s.push(1);
    // 直接在栈顶构造元素
    s.emplace(2);
    s.push(3);

    // 出栈操作  
    while (!s.empty()) {
        // 打印栈顶元素
        std::cout << "栈顶元素 : " << s.top() << std::endl;
        // 出栈
        s.pop();
    }

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

2、执行结果

执行结果 :

代码语言:javascript
复制
栈顶元素 : 3
栈顶元素 : 2
栈顶元素 : 1
请按任意键继续. . .
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、 stack 堆栈容器常用 api 简介
    • 1、栈顶插入元素 - stack#push 函数
      • 2、栈顶构造元素 - stack#emplace 函数
        • 3、获取栈顶元素 - stack#top 函数
          • 4、获取栈顶元素 - stack#pop 函数
            • 5、获取栈顶元素 - stack#empty 函数
            • 二、 代码示例
              • 1、代码示例
                • 2、执行结果
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档