std::stack

C++ STL 标准库 std::stack 总结 STL 标准库 stack 总结简介Constructor常用的成员函数 简介 Stack 是一种容器适配器/配接器(container adaptor), 被设计用来支持 LIFO 的数据结构. deque 是双向开口的数据结构, 因此以 deque 为底部结构封闭其头部开口, 就可以形成 Stack. adaptor 指的是通过修改某种容器的接口, 形成另一种数据结构, 因此他不被归类为容器. 他被定义在<stack> 头文件中, 如果使用必须引入改头文件, 定义方式为 template& 阅读详情

std::stack

介绍

成员函数

非成员函数

介绍

// stack 模板定义
template<class T, class Container = std::deque<T> > class stack;
  • std::stack 类是容器适配器,它给予程序员栈的功能——特别是 FILO(先进后出)数据结构
  • 该类模板表现为底层容器的包装器——只提供特定函数集合。栈从被称作栈顶的容器尾部推弹元素

成员函数

构造析构
#include <QCoreApplication>
#include <iostream>
#include <stack>
#include <vector>

auto Print = [](const std::string &msg, const std::stack<int> &sk) {
  std::stack<int> s = sk;
  std::cout << msg << "\t";
  while (!s.empty()) {
    std::cout << s.top() << "\t";
    s.pop();
  }
  std::cout << std::endl;
};

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using st_int = std::stack<int>;
  st_int s1;    // 默认构造
  Print("s1 : ", s1);
  s1.push(1);
  s1.push(2);

  std::stack<int, std::vector<int>> s2;   // 指定适配容器构造
  Print("s2 : ", s1);
  s2.push(3);
  s2.push(4);

  st_int s3(s1);   // 拷贝构造
  Print("s3 : ", s3);

  std::deque<int> dp;
  dp.push_back(5);
  dp.push_back(6);

  std::allocator<int> alloc;
  st_int s4(dp, alloc);   // 指定容器,分配器
  Print("s4 : ", s4);

  st_int s5(s1, alloc);  // 拷贝构造,指定分配器
  Print("s5 : ", s5);

  //析构函数默认
  return 0; // a.exec();
}

输出结果:
s1 :
s2 : 2 1
s3 : 2 1
s4 : 6 5
s5 : 2 1

元素访问
#include <QCoreApplication>
#include <iostream>
#include <stack>
#include <vector>

auto Print = [](const std::string &msg, const std::stack<int> &sk) {
  std::stack<int> s = sk;
  std::cout << msg << "\t";
  while (!s.empty()) {
    std::cout << s.top() << "\t";
    s.pop();
  }
  std::cout << std::endl;
};

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using st_int = std::stack<int>;
  st_int s1;
  s1.push(1);
  s1.push(2);
  Print("s1 : ", s1);

  // 访问栈顶元素
  std::cout << "top: " << s1.top() << "\t" << s1.top() << std::endl;
  return 0; // a.exec();
}

输出结果:
s1 : 2 1
top: 2 2

容量
#include <QCoreApplication>
#include <iostream>
#include <stack>
#include <vector>

auto Print = [](const std::string &msg, const std::stack<int> &sk) {
  std::stack<int> s = sk;
  std::cout << msg << "\t";
  while (!s.empty()) {
    std::cout << s.top() << "\t";
    s.pop();
  }
  std::cout << std::endl;
};

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using st_int = std::stack<int>;
  st_int s1;
  s1.push(1);
  s1.push(2);
  Print("s1 : ", s1);

  // 判断容器是否为空
  std::cout << "empty : " << std::boolalpha << s1.empty() << std::endl;
  // 获取容器数据数量
  std::cout << "size  : " << s1.size() << std::endl;

  return 0; // a.exec();
}

输出结果:
s1 : 2 1
empty : false
size : 2

修改器
#include <QCoreApplication>
#include <iostream>
#include <stack>
#include <vector>

auto Print = [](const std::string &msg, const std::stack<int> &sk) {
  std::stack<int> s = sk;
  std::cout << msg << "\t";
  while (!s.empty()) {
    std::cout << s.top() << "\t";
    s.pop();
  }
  std::cout << std::endl;
};

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using st_int = std::stack<int>;
  st_int s1;
  s1.push(1);  // 压栈
  s1.push(2);
  s1.emplace(3);  // 压栈
  s1.emplace(4);
  s1.emplace(5);
  Print("s1 : ", s1);

  s1.pop();  // 弹栈
  Print("s1 : ", s1);
  s1.pop();  // 弹栈
  Print("s1 : ", s1);

  st_int s2;
  s2.swap(s1);  // 容器互换内容
  Print("s1 : ", s1);
  Print("s2 : ", s2);
  return 0; // a.exec();
}

输出结果:
s1 : 5 4 3 2 1
s1 : 4 3 2 1
s1 : 3 2 1
s1 :
s2 : 3 2 1

起始

基于STM32的HC-SR04超声波模块测距(新手级) 本人是嵌入式新手,学习了STM32的部分内容,最近想找些项目做,然后顺便学习了一下HC-SR04超声波模块,学习过程中也参考了一些大佬的文章。本文记录了自己的学习方法和学习过程,同时也希望能和各位大佬交流讨论。 阅读详情

相关推荐

汽车以太网- IEEE 802.3标准

关于汽车以太网,大家看到最多的标准大概就是IEEE802.3bw,也就是我们车内使用的百兆以太网,专业称呼是100BASE-T1,该标准是车内百兆以太网的物理层协议,是我们学习汽车以太网必须要了解的协议。在正式了解协议之前,我们先介绍下什么是IEEE802.3标准。............

weixin_39974126的博客 7109

C++:stack 定义,用法,作用,注意点

要使用std::stack,你需要包含<stack>

m0_74331272的博客 6965

OpenCV 开闭运算

开运算和闭运算是将腐蚀和膨胀按照一定的次序进行处理。 但这两者并不是可逆的,即先开后闭并不能得到原来的图像。 开运算 开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。 闭运算 闭运算与开运算相反,是先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。 cv.morphologyEx(img, op, kernel) img: 要处理的图像 op: 处理方式:若进行开运算,则设为cv.MORPH_OPEN,若进行闭

꧁༺ʚvv༒catɞ༻꧂的博客 949

stl标准库系列之--stack

1、什么是容器适配器2、stack 容器的定义3、stack 容器创建1、 创建一个不包含任何元素的 stack 适配器,并采用默认的 deque 基础容器2、创建指定底层容器的 stack 适配器3、赋值4、迭代器5、成员函数6、使用 1、什么是容器适配器 理解容器适配器之前,我们需要了解什么是适配器,其实和我们现实中的适配器是差不多的理解。也可以去了解下设计模式中的适配器模式。 容器适配器是一个封装了序列容器的类模板。是在一般的序列容器的基础上提供了一些功能。所谓的容器适配器,目的就是为了适配基础容器.

slowlytalk 733

Amos实战:如何用Bootstrap法检验中介效应?附完整操作步骤

本文详细介绍了如何使用Amos软件通过Bootstrap法检验中介效应,包括模型设定、参数配置和结果解读。Bootstrap方法因其不依赖正态分布假设、统计功效高等优势,成为中介效应分析的首选方法。文章提供了完整的操作步骤和实用建议,帮助研究者准确评估变量间的中介作用机制。

zz67890的博客 1440

工业音频故障检测:从CNN到Transformer的技术演进

音频信号处理是工业设备预测性维护的核心技术之一,通过分析设备运行时产生的声波特征实现故障预警。传统方法依赖梅尔频率倒谱系数(MFCC)等手工特征,而深度学习技术尤其是Transformer架构,通过自注意力机制突破了CNN在跨频段特征提取上的局限。Audio Spectrogram Transformer(AST)等先进模型在工业场景中展现出91.2%的高召回率,显著优于传统方案。这种非接触式监测技术结合边缘计算优化,已成功应用于石油化工、电力能源等领域,实现提前72小时预测轴承故障,单项目可避免数百万元的

weixin_30467861的博客 327

std::stack 基本操作

C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。 c++ stl栈stack的头文件为:  #include &lt;stack&gt;  c++ stl栈stack的成员函数介绍 操作 比较和分配堆栈 empty() 堆栈为空则返回真 pop() 移除栈顶元素 push() 在栈顶增加元素 siz...

天才樱木 2万+

数据分析项目:直播电商用户流失分析

其中,'Tenure'(在网时长)可能是影响用户流失的关键因素,意味着用户在平台上的停留时间越长,流失的可能性可能越低,这提示平台应注重提高用户粘性,增加用户在平台上的活跃度和停留时间。)的分析,挖掘用户流失的原因和模式,分析发现用户投诉处理效率(Complain)、距上次消费时长(DaySinceLastOrder)、会员生命周期(Tenure)等8项核心指标对流失预测贡献度达87%,模型准确率94.58%,并提出相应的建议。重视用户的满意度,及时处理用户的投诉和反馈,不断改进平台的服务和功能。

Nervousr的博客 2459

C++/C++11中std::stack的使用

C++/C++11中std::stack的使用

网络资源是无限的 1万+

树莓派4B+红外传感器:手把手教你DIY一个能走黑线的智能小车(Python代码全解析)

本文详细介绍了如何使用树莓派4B和红外传感器DIY一个智能循迹小车,包括硬件配置、GPIO连接、Python代码实现及优化算法。通过动态PWM调速、状态机设计和赛道记忆算法,提升小车的循迹性能和稳定性。适合初学者和电子爱好者动手实践。

weixin_29188043的博客 269

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?此外,用户还可以选择将接收到的图片、视频和文件保存到指定的文件夹中。‌用户可以在微信设置中调整这一设置。

qq_15963745的博客 5088

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

STL、stack的介绍、stack的使用、stack构造函数、stack成员函数、empty()(检测stack是否为空)size()(返回stack中元素的个数)top()(返回栈顶元素的引用)push()(将元素val压入stack中)pop()(将stack中尾部的元素弹出)

Crocodile1006的博客 9502

【原理图PCB专题】Cadence17.4 PCB位号重排与反标

Cadence17.4 PCB位号重排与反标比Cadence16版本更简单一些,那到底如何操作?

一点硬件 1181

C++初阶-std::stack的讲解和使用

本文介绍了C++标准库中的std::stack容器及其应用。std::stack提供了empty()、size()、push()、pop()等基本栈操作,并通过三个典型题目展示了其实际应用:1) 最小栈的实现,使用辅助栈记录最小值;2) 判断栈的压入、弹出序列是否合法;3) 用两个栈实现队列功能,分别处理入队和出队操作。文章强调虽然std::stack功能简单,但在解决特定问题时非常实用,最后预告后续将讲解queue和deque相关内容。

博客是在C++/Java/Liunx/算法的学习阶段所写的博客,内容可能不是很全面 1057

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C++ std::stack

重点总结: Stack是一个一个先进后出(FILO)的容器,为了严格遵循FILO,Stack不提供元素的任何迭代器操作。 Stack 是一个容器类的改编,提供特定的函数来访问元素。Stack 只能从容器的一端(栈顶)进行插入、删除、访问操作。 Stack的基本操作示意图如下所示。本文参考自std::stack。 1. Stack与构造函数2. empty()、size()3. push()、pop()、top()4. swap()、emplace()   1. Stack与构造函数    st.

肥猫王德福的博客 1898

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

std::stack和std::queue

本文通过对stack和queue两个容器适配器的模拟实现,对deque容器的解释来让读者能够更好的理解使用stack和queue的功能,文章结尾配有习题来供读者练习。

2401_87944878的博客 1777

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C++——std::Stack

写在前面 这一篇博客系统学习一下C++中stack这个容器。根据维基百科——堆栈解释: 堆栈(英语:stack)又称为栈或堆叠,是计算机科学中一种特殊的串列形式的抽象资料型别,其特殊之处在于只能允许在链接串列或阵列的一端(称为堆叠顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。另外栈也可以用一维数组或连结串列的形式来完成。堆叠的另外一个相对的操作方式称为...

zy2317878的博客 4237

std::stack使用总结

Stack(堆栈)   stack是一种简单而常用的数据结构,stl库中提供了现成的实现方案。   在使用stack的时候,需要包含头文件stack,其在std中的定义如下: template&amp;amp;lt; class T, class Container = std::deque&amp;amp;lt;T&amp;amp;gt; &amp;amp;gt; class stack;   第一个参数定义了元素的类型,第二个参数表示s...

大山喵写博客的地方 5455

c++ std::stack、std::queue、std::priority_queue使用笔记

、 和 是 C++ 标准库中的容器适配器,它们基于底层容器(如 或 )提供特定的数据结构接口。以下是它们的详细说明和使用方法。 是一个后进先出(LIFO, Last In First Out)的容器适配器,通常基于 实现。 使用场景 需要后进先出的场景,如函数调用栈、撤销操作等。 递归算法的非递归实现。 2. 是一个先进先出(FIFO, First In First Out)的容器适配器,通常基于 实现。 使用场景 需要先进先出的场景,如任务调度、消息队列等。 广度优先搜索(BFS)算法

曾经也曾立志 1156

C++ STL源码剖析 3-std::queue std::stack

线程池中的线程可以循环使用,当任务到达时,线程池会分配空闲线程去执行任务,如果线程池满了,则任务会排队等待。注意,我们在队列中使用了一个特殊值(-1)作为结束信号,当生产者线程结束后,向队列中添加这个值,并通知所有等待的消费者线程。在这个示例中,我们创建了两个生产者线程和两个消费者线程。:尽量减少锁的争用时间,例如,可以在持有锁的代码块之外进行数据的加工和处理,只在实际需要修改共享资源时才持有锁。:对于生产者和消费者操作,使用不同的锁,这样可以在某些情况下同时允许生产者和消费者操作,增加并行度。

wesigj的博客 1685

「C/C++」C++ STL容器库 之 std::stack 栈容器

std::stack是一个简单且易于使用的容器适配器,提供了基于堆栈的数据结构,适用于许多不同的编程场景。它的主要优点是后进先出(LIFO)的特性,使得它在实现递归和回溯算法、表达式求值(如逆波兰表示法)、深度优先搜索(DFS)算法、括号匹配等需要LIFO数据结构的场景中非常有用。在使用std::stack时,需要根据具体需求选择合适的底层容器,并小心处理异常和性能问题。默认情况下,std::stack使用std::deque作为其底层容器,但也可以根据需要选择std::vector或其他容器。

何曾参静谧的博客 1401

从 C 到 C++:容器适配器 std::stack 与 std::queue 详解

对于刚从 C 语言转向 C++ 的朋友来说,标准库中的容器适配器是提升开发效率的利器。std::stack(栈)和std::queue(队列)作为两种常用的容器适配器,封装了底层容器的复杂细节,提供了简洁直观的操作接口,彻底告别了 C 语言中手动实现栈和队列的繁琐。本文将详细介绍这两种适配器的特性、底层实现及完整操作指南。

weixin_59661438的博客 1013

C++ STL标准库:std::stack堆栈的使用 入栈push() 出栈pop() 获取元素top()

#include <iostream> #include <stack> #include <string> #include <list> #include <assert.h> using namespace std; void main() { stack<string,list<string> > s1; s1.push("苹果"); cout<<"\"苹果\" 放入堆栈中. "<&

超级大洋葱的博客 1万+

c++11 标准模板(STL)(std::stack)(五)

按照字典顺序比较 stack 中的值。 为 std::stack 特化 std::swap 算法。交换 lhs 与 rhs 的内容。调用 lhs.swap(rhs) 。

qq_40788199的博客 895

C++ 学习系列 -- std::stack 与 std::queue

两者均是 c++ 中的序列化容器,区别在于:std::stack 元素是先进后出std::queue 元素是先进先出。

qq_33775774的博客 595
上一篇: QCustomplot基本使用
下一篇: std::queue
无夜_
博客等级 码龄7年 2916粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值