【STL——stack容器】

引入

stack(栈)容器是一种先进后出的容器,两端只有一个开口,只能从这一个开口插入和删除数据。可以想象成一个底面封住的纸筒,如果放羽毛球的话,只能从杯口放入且从杯口取,先取的一定是最后放的球。羽毛球的存取顺序就是先进后出(或后进先出)。

在前面已经发布的栈这一篇中有更多例图供参考,可自行查看:数据结构------栈

在C++中使用该容器,需要加头文件stack:

#include < stack>

构造函数
  • 默认构造函数,拷贝构造函数,赋值函数
cpp 复制代码
void testQ() {
	stack <int> stkT;   //默认构造函数
	stack<int> s1(stkT); //拷贝构造函数

//赋值函数
stack<int> s2=s1;
	}
数据存取

push(elem);//向栈顶添加元素

pop();//从栈顶移除第一个元素

top();//返回栈顶元素

cpp 复制代码
void testQ() {
	stack <int> stk;   
	stk.push(11);
	stk.push(22);
	stk.push(33); //11,22,33依次入栈

	cout<<stk.top()<<endl;    //获得栈顶元素:33
	stk.pop();    //栈顶元素33出栈,还剩11、22
	stk.pop();    //栈顶元素22出栈,还剩11
	cout<<stk.top();    //获得栈顶元素:11
	}
判空与大小

empty();//判断堆栈是否为空

size();//返回堆栈的大小

cpp 复制代码
void testQ() {
	stack <int> stk;   
	stk.push(11);
	stk.push(22);
	stk.push(33); //11,22,33依次入栈

	cout<<stk.size()<<endl;    //获得栈大小:3
	stk.pop();    //栈顶元素33出栈,还剩11、22
	stk.pop();    //栈顶元素22出栈,还剩11
	cout << stk.empty() << endl;    //判空:不为空,输出0
	stk.pop();    //栈顶元素11出栈,为空栈
	cout << stk.empty();    //判空:为空,输出1
	}
例题

输入一个十进制整数,输出对应的二进制数。

cpp 复制代码
void testQ() {
	stack<int> stk;
	int n = 0;
	cin >> n;
	while (n) {
		stk.push(n % 2);
		n /= 2;
	}
	while (!stk.empty()) {
		cout << stk.top();
		stk.pop();
	}
	}
相关推荐
郝学胜-神的一滴12 分钟前
Leetcode 969 煎饼排序✨:翻转间的数组排序艺术
数据结构·c++·算法·leetcode·面试
毕设源码-邱学长6 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
rookieﻬ°7 小时前
PHP框架漏洞
开发语言·php
炸膛坦客7 小时前
单片机/C/C++八股:(二十)指针常量和常量指针
c语言·开发语言·c++
兑生8 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
炸膛坦客9 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲9 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
Jay_Franklin9 小时前
Quarto与Python集成使用
开发语言·python·markdown
2401_831824969 小时前
代码性能剖析工具
开发语言·c++·算法
是wzoi的一名用户啊~10 小时前
【C++小游戏】2048
开发语言·c++