【C++ 十四】C++ stack容器
本文包含stack基本概念、stack构造函数、stack赋值操作、stack数据存取、stack大小操作。
文章共2,194字 · 阅读需要大约8分钟
一键AI生成摘要,助你高效阅读
问答
·
C++ 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栈容器,需包含头文件stack
void 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栈容器,需包含头文件stack
void 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栈容器,需包含头文件stack
void 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栈容器,需包含头文件stack
void 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。
更多推荐
已为社区贡献3条内容
所有评论(0)