【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();
	}
	}
相关推荐
Larry_Yanan4 分钟前
Qt多进程(三)QLocalSocket
开发语言·c++·qt·ui
醒过来摸鱼9 分钟前
Java classloader
java·开发语言·python
superman超哥10 分钟前
仓颉语言中元组的使用:深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
小鸡吃米…15 分钟前
Python - 继承
开发语言·python
JIngJaneIL39 分钟前
基于java+ vue农产投入线上管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
祁思妙想43 分钟前
Python中的FastAPI框架的设计特点和性能优势
开发语言·python·fastapi
唐装鼠1 小时前
rust自动调用Deref(deepseek)
开发语言·算法·rust
Lucas555555551 小时前
现代C++四十不惑:AI时代系统软件的基石与新征程
开发语言·c++·人工智能
源代码•宸1 小时前
goframe框架签到系统项目(BITFIELD 命令详解、Redis Key 设计、goframe 框架教程、安装MySQL)
开发语言·数据库·经验分享·redis·后端·mysql·golang
吃喝不愁霸王餐APP开发者1 小时前
Java后端系统对接第三方外卖API时的幂等性设计与重试策略实践
java·开发语言