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。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐