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、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。