【c++】【STL】stack详解

目录

  • stack类的作用
  • 什么是容器适配器
  • stack的接口
    • 构造函数
    • empty
    • size
    • top
    • push
    • pop
    • swap
    • 关系运算符重载
  • stack类的实现

stack类的作用

stack是stl库提供的一种容器适配器,也就是我们数据结构中学到的栈,是非常常用的数据结构,特点是遵循LIFO(last in first out,也就是后进先出)原则。

什么是容器适配器

stl中提供的类很多都叫容器,但有一些叫做容器适配器,容器适配器到底是啥呢?我们不妨先抛掉容器这两个字,先来谈谈适配器,适配器是软件设计之中的一种概念,即基于原有的接口设计适配出用户想要的接口,是一种设计模式,适配器这种设计模式提升了代码复用性以及系统扩展性,降低了代码的耦合度,是一种优秀的设计模式。那么对于容器适配器来说,就是利用已有的容器进行各种操作封装出新的类,这就叫容器适配器。

stack的接口

构造函数

explicit stack (const container_type& ctnr = container_type());

一般来说不用给参数,直接调用默认构造就行。

empty

bool empty() const;

栈的判空。

size

size_type size() const;

返回栈的元素数。

top

      value_type& top();
const value_type& top() const;

返回栈顶元素。

push

void push (const value_type& val);

入栈。

pop

void pop();

出栈。

swap


void swap (stack& x) noexcept(/*see below*/);

栈自己的交换函数。

关系运算符重载

template <class T, class Container>bool operator== (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator!= (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator<  (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator<= (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator>  (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator>= (const stack<T,Container>& lhs, const stack<T,Container>& rhs);

stack类的实现

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<deque>using namespace std;namespace jiunian
{template<class T, class container = deque<T>>class stack{public:typedef stack<T, container> Self;//stack()//{//}//stack(Self& x)://	con(x.con)//{//}//~stack()//{//}bool empty()const{return con.empty();}size_t size()const{return con.size();}T& top(){return con.back();}const T& top() const{return con.back();}void push(const T& val){con.push_back(val);}void pop(){con.pop_back();}void swap(Self& x){con.swap(x.con);}Self operator=(Self x){con = x.con;return *this;}private:container con;};
}

stack作为一个容器适配器,实现起来相比其他容器明显简单了不少,因为其作为容器适配器只需要对其他容器的接口进行封装就行,不需要自己造轮子。实现过程一看就懂,不做过多赘述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8s学习与实践

一、Kubernetes 核心原理 1. Kubernetes 设计哲学 Kubernetes&#xff08;k8s&#xff09;是一个开源的容器编排平台&#xff0c;旨在自动化容器化应用的部署、扩展和管理。其核心设计围绕以下目标&#xff1a; 声明式配置&#xff1a;用户描述期望状态&#xff08;如 YAML …

Umi-OCR项目(1)

最近接触到了一个项目&#xff0c;我在想能不能做出点东西出来。 目标&#xff1a;识别一张带表格的图片&#xff0c;要求非表格内容和表格内容都要识别得很好&#xff0c;并且可视化输出为word文档。 下面是第一步的测试代码&#xff0c;测试是否能够调用ocr能力。 import re…

Mioty|采用报文分割(Telegram Splitting)以提高抗干扰能力的无线通信技术【无线通信小百科】

1、什么是Mioty 在物联网&#xff08;IoT&#xff09;快速发展的背景下&#xff0c;低功耗广域网&#xff08;LPWAN&#xff09;技术成为连接海量设备的关键。LPWAN具有低功耗、低成本、广覆盖和强抗干扰能力等特点&#xff0c;使其特别适用于大规模、远距离、低数据速率的IoT…

TCP三次握手、四次挥手+多线程并发处理

目录 一、三次握手建立连接 1.1 标记位 1.2 三次握手的过程 二、四次挥手断开连接 三、模拟服务器和客户端收发数据 四、多线程并发处理 五、TCP粘包问题 5.1 什么是TCP粘包&#xff1f; 5.2 TCP粘包会有什么问题&#xff1f; 5.3 TCP粘包的解决方法&#xff1f; 一、三…

使用HunyuanVideo搭建文本生视频大模型

1.摘要 HunyuanVideo是一个全新的开源视频基础模型&#xff0c;其视频生成性能堪比领先的闭源模型&#xff0c;甚至超越它们。我们采用了多项模型学习的关键技术&#xff0c;通过有效的模型架构和数据集扩展策略&#xff0c;我们成功训练了一个拥有超过 130 亿个参数的视频生成…

LabVIEW圆锥滚子视觉检测系统

基于LabVIEW平台的视觉检测系统提高圆锥滚子内组件的生产质量和效率。通过集成高分辨率摄像头和先进的图像处理算法&#xff0c;系统能够自动识别和分类产品缺陷&#xff0c;从而减少人工检查需求&#xff0c;提高检测的准确性和速度。 ​​ ​ 项目背景 随着制造业对产品质…

mac 基于Docker安装minio服务器

在 macOS 上基于 Docker 安装 MinIO 是一个高效且灵活的方案&#xff0c;尤其适合本地开发或测试环境。以下是详细的安装与配置步骤&#xff0c;结合了最佳实践和常见问题的解决方案&#xff1a; 一、安装 Docker Desktop 下载安装包 访问 Docker 官网&#xff0c;下载适用于 …

EchoMimicV2 部署记录

在这里插入代码片# 虚拟环境配置 pip install pip -U pip install torch2.5.1 torchvision0.20.1 torchaudio2.5.1 xformers0.0.28.post3 --index-url https://download.pytorch.org/whl/cu124 pip install torchao --index-url https://download.pytorch.org/whl/nightly/cu1…

数据升降级:医疗数据的“时空穿梭“系统工程(分析与架构篇)

一、核心挑战与量化分析 1. 版本演化困境的深度解析 (1) 格式断层的结构化危机 数据转换黑洞:某医疗信息平台(2021-2023)统计显示: 数据类型CDA R1→R2转换失败率R2→FHIR转换失败率关键失败点诊断记录28.4%19.7%ICD编码版本冲突(18.7%)用药记录15.2%12.3%剂量单位标准化…

个人开发免费好用

聊一聊 现在输入法非常多&#xff0c;有时候都不知道哪个更好用。 其实&#xff0c;只有多尝试&#xff0c;才能找到适合自己的。 今天给大家分享一款输入法&#xff0c;用起来比较顺手&#xff0c;大家可以试试。 软件介绍 BL输入法 这是一款绿色纯净&#xff0c;安全放心…

Windows查看和修改IP,IP互相ping通

Windows系统 查看IP地址 winr 输入cmd 打开终端使用 ipconfig 或 ipconfig -all 命令查看当前网络 IPV4地址 Windows系统 修改IP地址 自动获取IP&#xff08;DHCP&#xff09;&#xff1a; 打开 控制面板&#xff0c;点击 网络和Internet。点击 网络和共享中心。选择 更改适配…

【IP101】图像处理基础:从零开始学习颜色操作(RGB、灰度化、二值化、HSV变换)

&#x1f3a8; 颜色操作详解 &#x1f31f; 在图像处理的世界里&#xff0c;颜色操作就像是一个魔术师的基本功。今天&#xff0c;让我们一起来解锁这些有趣又实用的"魔法"吧&#xff01; &#x1f4da; 目录 通道替换 - RGB与BGR的"调包"游戏灰度化 - 让…

windows系统搭建自己的ftp服务器,保姆级教程(用户验证+无验证)

前言 最近在搭建环境时&#xff0c;我发现每次都需要在网上下载依赖包和软件&#xff0c;这不仅耗时&#xff0c;而且有时还会遇到网络不稳定的问题&#xff0c;导致下载速度慢或者中断&#xff0c;实在不太方便。于是&#xff0c;我产生了搭建一个FTP服务器的想法。通过搭建FT…

蓝桥杯 7. 晚会节目单

晚会节目单 原题目链接 题目描述 小明要组织一台晚会&#xff0c;总共准备了 n 个节目。然而晚会时间有限&#xff0c;他只能从中选择 m 个节目。 这 n 个节目是按照小明设想的顺序给定的&#xff0c;顺序不能改变。 小明发现观众对于晚会的喜欢程度与前几个节目的好看程度…

JavaScript如何实现类型判断?

判断一个数据的类型&#xff0c;常用的方法有以下几种&#xff1a; typeofinstanceofObject.prototype.toString.call(xxx) 下面来分别分析一下这三种方法各自的优缺点 typeof typeof的本意是用来判断一个数据的数据类型&#xff0c;所以返回的也是一个数据类型。但是会遇到下…

哈希表笔记(四)Redis对比Java总结

文章目录 一、基础结构对比数据结构定义Java HashMapRedis字典 主要区别与设计思路 二、关键操作API对比初始化Java HashMapRedis字典 添加元素Java HashMapRedis字典 查找元素Java HashMapRedis字典 删除元素Java HashMapRedis字典 扩容/重哈希操作Java HashMapRedis字典 三、…

docker拉取国内镜像

1. 场景 最近整了一个tencent云服务器&#xff0c;想要玩一下docker&#xff0c;结果发现拉不下来&#xff0c;镜像根本拉不下来。 2. 原因 1.云服务器无法访问外网&#xff1b; 2. 国内的很多公有镜像仓库都被封了&#xff1b; 3. 推荐 https://zhuanlan.zhihu.com/p/713…

Codeforces Round 1008 (Div. 2) C

C 构造 题意&#xff1a;a的数据范围大&#xff0c;b的数据范围小&#xff0c;要求所有的a不同&#xff0c;考虑让丢失的那个a最大即可。问题变成&#xff1a;构造一个最大的a[i] 思路&#xff1a;令a2是最大的,将a1,a3,a5....a2*n1&#xff0c;置为最大的b&#xff0c;将a4,a…

STM32 HAL库实现USB虚拟串口

1. 引言 在嵌入式系统开发中&#xff0c;USB 虚拟串口是一种非常实用的功能。它允许 STM32 微控制器通过 USB 接口与计算机进行通信&#xff0c;就像使用传统的串口一样。这种方式不仅简化了硬件设计&#xff0c;还提高了通信的灵活性和稳定性。STM32F407 系列微控制器具有强大…

JAVA EE_网络原理_UDP与TCP

人海中未遇见时&#xff0c;我将独自前行... ----------陳長生. 1.UDP协议 1.1.UDP协议端格式 UDP&#xff08;用户数据报协议&#xff09;是由 源端口&#xff0c;目标端口&#xff0c;长度&#xff0c;校验和&#xff0c;数据 5种结构组成。16位是UDP报文中字段的长度&#…