STL之Stack使用

STL官方文档:http://www.cplusplus.com/reference/stl/

Stack栈的使用:

定义:栈是一种受限的线性表,只允许在栈一端进行插入和删除操作,称为栈顶,满足先进后出(后进先出)原则。

头文件:#include<stack>

创建:

stack<ElementType > stackname;

还有一些重载的构造函数类似vector。

插入函数:push(Num):将Num压入栈

查询函数:top():查询栈顶元素

弹出函数:pop():将栈顶元素弹出

其他函数:

empty():可以检测stack内是否为空,返回true为空,返回false为非空

Size():返回stack内元素的个数

示例:

stack<int> stack1;  //创建
	stack1.push(10);
	stack1.push(20);
	stack1.push(30); //压入元素
	stack<int> stack2(stack1);//复制构造
	cout << stack1.top() << endl;
	stack2.pop();
	cout << stack2.top() << endl;
	stack1.swap(stack2);//交换栈元素
	cout << stack1.top() << endl;
	cout << stack2.top() << endl;

栈和堆的关系:
  1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表
  二、堆栈缓存方式区别:
  1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
  2、堆是存放在二级缓存中,生命周期虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值