【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();
	}
	}
相关推荐
_wyt00111 小时前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
LDR00613 小时前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 小时前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园14 小时前
C++20 Modules 模块详解
java·开发语言·spring
swordbob14 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享15 小时前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.15 小时前
C语言--day30
c语言·开发语言
玖玥拾15 小时前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
何以解忧,唯有..15 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽15 小时前
C语言不是语法,是通往机器的地图。
c语言·开发语言