【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();
	}
	}
相关推荐
qq_25183645710 分钟前
理发管理系统 —— 会员模块
开发语言·前端·python·flask
Dovis(誓平步青云)13 分钟前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
郝学胜-神的一滴16 分钟前
AI 编程智能体 03:拆解当下主流智能体能力
开发语言·c++·人工智能·python·程序人生·游戏
言乐621 分钟前
Python文字审核模型
开发语言·windows·python·django·pygame
Cc.Y1 小时前
Java零基础入门:方法(函数)深度掌握
java·开发语言
老王爱玩车1 小时前
工具函数——清空输入缓冲区
c语言·开发语言·学习
宵时待雨1 小时前
linux笔记归纳25:多路转接epoll
linux·服务器·网络·c++
奋发向前wcx1 小时前
CSP-J复赛模拟赛1 王晨旭补题 2026.10.2
java·开发语言
周杰伦fans1 小时前
轻量模型高并发推理优化技巧
开发语言·人工智能·c#
Frank_refuel1 小时前
【C++项目】手撕JRpc框架(单机怎么优化到分布式思想)
开发语言·c++