C++ stack容器
C++ stack容器
文章目录
- C++ stack容器
- 前言
-
- 1. stack 基本概念
- 2. stack 构造函数
- 3. stack 赋值
- 4. stack 数据存取
- 5. stack 大小
- 总结
前言
本文包含stack基本概念、stack构造函数、stack赋值操作、stack数据存取、stack大小操作。
1. stack 基本概念
概念:
(1)、stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口
(2)、栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为 (遍历:非质变算法,在运算期间,不改变容器中的元素)
(3)、栈中进入数据称为 — 入栈 push
(4)、栈中弹出数据称为 — 出栈 pop
生活中的栈:
子弹夹,先装进弹夹的子弹,最后被打出来
2. stack 构造函数
(1)、stack<T> stk;
stack采用模板类实现, stack对象的默认构造形式
(2)、stack(const stack &stk);
拷贝构造函数
// stack栈容器构造函数#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <stack> // 使用stack栈容器,需包含头文件stackvoid test() {// 1、默认构造stack<int> s;// 2、拷贝构造函数stack<int> s1(s);
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}
3. stack 赋值
// stack栈容器赋值#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <stack> // 使用stack栈容器,需包含头文件stackvoid test() {// 创建stack容器对象,并且通过模板参数指定容器中存放的数据的类型,栈容器必须符合先进后出stack<int> s;stack<int> s1;// 重载等号操作符operator=s1 = s;
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}
4. stack 数据存取
(1)、push(elem);
向栈顶添加元素
(2)、pop();
从栈顶移除第一个元素
(3)、top();
返回栈顶元素
// stack栈容器数据存取#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <stack> // 使用stack栈容器,需包含头文件stackvoid test() {// 创建stack容器对象,并且通过模板参数指定容器中存放的数据的类型,栈容器必须符合先进后出stack<int> s;// 1、push()向栈顶添加元素,叫做 压栈 入栈s.push(70);s.push(20);s.push(50);s.push(40);// 2、pop()删除栈顶第一个元素s.pop();// 3、top()返回栈顶第一个元素cout << "s栈顶第一个数据元素为:" << s.top() << endl; // 50
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}
5. stack 大小
(1)、empty();
判断堆栈是否为空
(2)、size();
返回栈的大小
// stack栈容器大小#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <stack> // 使用stack栈容器,需包含头文件stackvoid test() {// 创建stack容器对象,并且通过模板参数指定容器中存放的数据的类型,栈容器必须符合先进后出stack<int> s;// 向栈顶添加元素,叫做 压栈 入栈s.push(70);s.push(20);// 1、empty()判断容器是否为空,返回真,则为空while (!s.empty()) { // 2、size()返回容器数据元素个数cout << "s栈容器不为空,大小为:" << s.size() << endl;break; // 退出循环}
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}
总结
(1)、stack 入栈 — push;
(2)、stack 出栈 — pop;
(3)、stack 返回栈顶 — top;
(4)、stack 判断栈是否为空 — empty;
(5)、stack 返回栈大小 — size。