C++中的栈(stack)与队列(queue)简明指南

一、栈(stack)——后进先出结构

基本特性

  • 类似一摞盘子:最后放入的盘子最先取出
  • 头文件:#include <stack>

常用操作

stack<int> s;    // 创建整型栈
s.push(10);      // 元素入栈 → [10]
s.push(20);      // → [10,20]
s.top();         // 返回栈顶元素 → 20
s.pop();         // 移除栈顶 → [10]
s.size();        // 返回元素个数 → 1
s.empty();       // 判断是否为空 → false

示例:反转数据

stack<char> charStack;
string str = "hello";

// 入栈
for(char c : str) {
    charStack.push(c);
}

// 出栈获得逆序
while(!charStack.empty()) {
    cout << charStack.top();
    charStack.pop();
}
// 输出:olleh

二、队列(queue)——先进先出结构

基本特性

  • 类似排队:先到的人先获得服务
  • 头文件:#include <queue>

常用操作

queue<string> q;
q.push("Alice");   // 队列 → ["Alice"]
q.push("Bob");     // → ["Alice", "Bob"]
q.front();         // 获取队首 → "Alice"
q.back();          // 获取队尾 → "Bob"
q.pop();           // 移除队首 → ["Bob"]
q.size();          // → 1

示例:消息处理

queue<string> msgQueue;
msgQueue.push("Task1");
msgQueue.push("Task2");

while(!msgQueue.empty()) {
    cout << "Processing: " << msgQueue.front() << endl;
    msgQueue.pop();
}
/* 输出:
Processing: Task1
Processing: Task2 */

三、如何选择

结构适用场景典型应用
需要后进先出撤销操作、括号匹配、函数调用栈
队列需要先进先出打印队列、消息队列、BFS算法

四、注意事项

  1. 访问top()/front()前务必检查容器是否为空
  2. pop()操作只移除元素不返回值
  3. 可通过size()实现有限容量控制
  4. 支持所有基础类型和自定义类型

总结

通过STL提供的stack和queue,无需手动实现数据结构,直接享受高效的内存管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flyee-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值