c++ stl栈stack介绍
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,主要操作包括堆栈初始化、元素入栈、取栈顶元素、元素出栈、判断堆栈是否非空和取得当前堆栈大小等。
c++ stl栈stack的头文件为:
#include
c++ stl栈stack的成员函数介绍(5种)
empty() 堆栈为空则返回真
pop() 移除栈顶元素
push(i) 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素
栈的底层容器可以是vector、list等,如:
stack<int,vector > s1;
stack<int, list > s2; // 用双向链表作堆栈的底层结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| //----------------------------------------- 读取堆栈的栈顶元素 #include <stack> #include <iostream> using namespace std; int main() { // 创建堆栈对象 stack<int> s; // 元素入栈 s.push(3); s.push(19); s.push(23); s.push(36); s.push(50); s.push(4); // 元素依次出栈 while(!s.empty()) { // 打印栈顶元素,打印出:4 50 36 23 19 3 cout << s.top() << endl; // 出栈 s.pop(); } return 0; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| /* 堆栈的大小 堆栈的元素个数可用 size 函数获得。每次元素入栈前,先检查当前堆栈的大小,超过某个界限值,则不允许元素入栈,以此可实现一个具有一定容量限制的堆栈。 size_type size() 返回当前堆栈的元素个数 下面的示例程序,将堆栈的大小设置为 100 个 int 元素,而且使用 list 双向链表做堆栈的底层容器,每次压入元素时均判断堆栈的大小是否超过100个元素的界限,从而实现具有容量限制的堆栈。 */ ----------------------------------------- 限制堆栈的大小 #include <stack> #include <list> #include <iostream> #define STACK_SIZE 100 // 堆栈最大容量 using namespace std; int main() { // 用双向链表作堆栈的底层结构 stack<int, list<int> > s; // 堆栈未满,元素才能入栈 if (s.size() < STACK_SIZE) s.push(68); if (s.size() < STACK_SIZE) s.push(1); if (s.size() < STACK_SIZE) s.push(17); // 元素出栈 while (!s.empty()) { // 打印 17 1 68 cout << s.top() << endl; s.pop(); } return 0; }
|