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;
相关推荐
学运维的Kysan几秒前
暑假运维学习打卡第二十六天8.17
学习
小小龙学IT27 分钟前
Boost.Beast 深度实战:基于 Asio 的开源 C++ HTTP/WebSocket 协议库
c++·websocket·http
dear_bi_MyOnly31 分钟前
AI人工智能分类识别——机器如何学习
人工智能·学习·分类
不可求~1 小时前
C++ std::string_view 不是字符串:从悬空引用到安全用法
java·开发语言·c++
小小龙学IT2 小时前
C++ 正则表达式完全指南:从 std::regex 实战到 RE2 引擎原理(NFA/DFA/回溯陷阱)
c++·正则表达式
启雀AI3 小时前
培训平台移动端离线学习方案设计与实现:视频缓存、断点续传与进度同步的工程实践
android·学习·缓存·音视频·企业lms
Bruce_Liuxiaowei5 小时前
从零到可运行:基于 Vue3 + FastAPI + DeepSeek-V3 的 AI 英语单词学习系统全栈实战
人工智能·python·学习·fastapi·全栈·智能体
码匠许师傅5 小时前
【C++ 面试真题】聊聊 C++ 的序列容器
java·c++·面试
C++ 老炮儿的技术栈6 小时前
Qt5.9.1 Windows 完整开发环境搭建流程
开发语言·c++·windows·qt·编辑器·代码化
欧特克_Glodon6 小时前
OpenCV计算机视觉开发入门与实践<十一>:矩阵的复制和矩形类Rect
c++·opencv·计算机视觉·矩阵