C++学习 --stack

目录

[1, 什么是stack](#1, 什么是stack)

[2, 创建stack](#2, 创建stack)

[2-1, 标准数据类型](#2-1, 标准数据类型)

[2-2, 自定义数据类型](#2-2, 自定义数据类型)

[2-3, 其他创建方式](#2-3, 其他创建方式)

[3, 操作stack](#3, 操作stack)

[3-1, 赋值](#3-1, 赋值)

[3-2, 插入元素(push)](#3-2, 插入元素(push))

[3-3, 查询元素](#3-3, 查询元素)

[3-4, 删除元素](#3-4, 删除元素)

[3-5, 判断是否为空](#3-5, 判断是否为空)

[3-6, 交换](#3-6, 交换)

[3-7, 获取长度](#3-7, 获取长度)


1, 什么是stack

C++中的容器数据类型, 叫着栈容器 , 元素是先进后出, 只有顶部元素 支持操作,所以不支持遍历

2, 创建stack

通过stack**<数据类型> 对象名** , 可创建stack, 数据类型可以是标准数据类型 , 也可以是自定义类型

2-1, 标准数据类型

cpp 复制代码
//stack中元素数据类型为string
stack<string> s1;

2-2, 自定义数据类型

cpp 复制代码
//stack中元素的数据类型为Myclass
stack<Myclass> s1;

2-3, 其他创建方式

cpp 复制代码
stack<Myclass> s1;
//通过拷贝构造方式, 将一个已存在的s1, 拷贝给s2
stack<Myclass> s2(s1);

3, 操作stack

3-1, 赋值

由于stack是一个容器, 只支持将一个 stack赋值给另外一个stack

cpp 复制代码
stack<Myclass> s2 = s1;

3-2, 插入元素(push)

通过对象名.push(元素), 向stack中插入元素

cpp 复制代码
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
Myclass m3("ccc", 3);
stack<Myclass> s1;
s1.push(m1);
s1.push(m2);
s1.push(m3);

3-3, 查询元素

通过对象名 .top(), 获取栈顶元素

cpp 复制代码
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
Myclass m3("ccc", 3);
stack<Myclass> s1;
s1.push(m1);
s1.push(m2);
s1.push(m3);
cout << s1.top().m_name << endl;
cout << s1.top().m_age << endl;

3-4, 删除元素

通过对象名.pop(), 删除栈顶元素

cpp 复制代码
s1.pop();

3-5, 判断是否为空

可通过**对象名.empty(),**判断栈是否为空, 为空返回0, 不为空返回1

cpp 复制代码
cout << s1.empty() << endl;

3-6, 交换

可通过对象名1.swap(对象名2), 交换两个栈的元素

cpp 复制代码
s1.swap(s2);

3-7, 获取长度

可通过s1.size(), 删除栈顶元素

cpp 复制代码
cout << s1.size() << endl;
相关推荐
m4Rk_4 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
蒸蒸yyyyzwd4 小时前
秋招学习笔记 day46
c++·八股
鬓戈5 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
传奇开心果编程5 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
xian_wwq5 小时前
【学习笔记】等保合规安全基线核查实战
笔记·学习
传奇开心果编程6 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
yangmu32036 小时前
发动机是怎么把油变成动力的:四冲程内燃机原理拆解
学习
m4Rk_6 小时前
【论文阅读】Agent 记忆机制(81):EMR——用情景记忆避免 Agent 在多步推理中反复绕圈
论文阅读·人工智能·学习·开源·github
海海不掉头发6 小时前
阶段五_实验34-38_学习总结
深度学习·神经网络·学习·机器学习
M78佐菲7 小时前
ARM学习笔记(11)
linux·arm开发·笔记·嵌入式硬件·学习