C++ STL stack -- queue
stack基本概念
stack是一种 先进后出(First In Last Out, FILO) 的数据结构,它只有一个出口
栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为
栈可以判断容器是否为空: empty
站可以返回元素个数:size
栈中进入数据 -------- 入栈 push
栈中弹出数据 -------- 出栈 pop
stack常用接口
1 #include <iostream> 2 #include <string> 3 #include <stack> 4 using namespace std; 5 //栈容器常用的对外接口 6 /* 7 构造函数: 8 stack<T> stk; //stack采用模板类实现,stack对象的默认构造形式 9 stack(const stack& stk); //拷贝构造函数 10 赋值操作: 11 stack& operator=(const stack& stk); //重载等号操作符 12 数据存取: 13 push(elem); //像栈顶添加蒜素 14 pop(); //从栈顶移除第一个元素 15 top(); //返回栈顶操作 16 大小操作: 17 empty(); //判断堆栈是否为空 18 size(); //返回栈的大小 19 */ 20 void test() 21 { 22 //先进后出数据结构 23 stack<int>s; 24 // 入栈 25 s.push(10); 26 s.push(20); 27 s.push(30); 28 s.push(40); 29 //栈不为空,查看栈顶,执行出栈 30 while (!s.empty()) 31 { 32 cout << "栈顶" << s.top() << " 栈的大小" << s.size() << endl; 33 s.pop(); 34 } 35 cout << "全部出栈" << endl; 36 } 37 int main() 38 { 39 test(); 40 system("pause"); 41 return 0; 42 }
queue基本概念
Queue是一种 先进先出(First In First Out, FIFO) 的数据结构 ,它有两个出口
队列容器从一端新增元素, 从另一端移除元素
队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为
队列中进数据 --- 入队 push
队列中出数据 --- 出队 pop
1 #include <iostream> 2 #include <string> 3 #include <queue> 4 using namespace std; 5 //队列容器常用的对外接口 6 /* 7 构造函数: 8 queue<T> que; //queue采用模板类实现,queue对象的默认构造形式 9 queue(const queue& que); //拷贝构造函数 10 赋值操作: 11 queue& operator=(const queue& que); //重载等号操作符 12 数据存取: 13 push(elem); //往队尾添加元素 14 pop(); //从队头移除第一个元素 15 back(); //返回最后一个元素 16 front(); //返回第一个元素 17 大小操作: 18 empty(); //判断堆栈是否为空 19 size(); //返回栈的大小 20 */ 21 class Person 22 { 23 public: 24 Person(string name, int age) 25 { 26 this->m_Age = age; 27 this->m_Name = name; 28 } 29 string m_Name; 30 int m_Age; 31 }; 32 void test() 33 { 34 //创建队列 35 queue<Person> q; 36 //准备数据 37 Person p1("张11", 100); 38 Person p2("李22", 200); 39 Person p3("老33", 300); 40 Person p4("老44", 400); 41 //入队 42 q.push(p1); 43 q.push(p2); 44 q.push(p3); 45 q.push(p4); 46 //队列不为空, 查看队头, 查看队尾,出队 47 while (!q.empty()) 48 { 49 //队列大小 50 cout << "队列大小:" << q.size() << endl; 51 //查看队头 52 cout << "队头元素:" << q.front().m_Name << " 年龄:" << q.front().m_Age << endl; 53 //查看队尾 54 cout << "队尾元素:" << q.back().m_Name << " 年龄:" << q.back().m_Age << endl; 55 //出队 56 q.pop(); 57 } 58 cout << "队列大小" << q.size() << endl; 59 } 60 int main() 61 { 62 test(); 63 system("pause"); 64 return 0; 65 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)