C++ STL 栈和队列的使用

本文介绍了C++ STL中的栈和队列。栈的定义在<stack>头文件中,常用操作包括push、pop、top、empty和size。队列在<queue>头文件中定义,其操作包括push、pop、front、back、empty和size。默认情况下,栈和队列的底层容器为deque。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、栈

栈的定义在头文件<stack>中,stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。
定义stack 对象的示例代码如下:
stack<int> s1;
stack<string> s2;


stack的基本操作有:对于stack<int> s

  入     栈:           s.push(x);

 出      栈:           s.pop();   //出栈只是删除栈顶元素,并不返回该元素

访问栈顶元素:    s.top();

判  断   栈  空:    s.empty();//栈空时,返回true

栈中的元素个数:s.size();

例子:

#include<iostream
### C++ STL队列的用法及区别 #### (Stack) 是一种后进先出(LIFO, Last In First Out)的数据结构。在 C++ STL 中,`stack` 是一种适配器容器,基于其他序列容器(如 `vector`, `deque` 或 `list`)。默认情况下,`stack` 使用 `deque` 作为底层容器。 要使用,需包含头文件 `<stack>`: ```cpp #include <stack> ``` 创建并操作的方式如下所示: ```cpp std::stack<int> s; s.push(10); // 向顶添加元素 s.push(20); if (!s.empty()) { std::cout << "Top element is: " << s.top() << '\n'; // 访问顶元素 } s.pop(); // 移除顶元素 ``` #### 队列(Queue) 队列则遵循先进先出(FIFO, First In First Out)的原则。同样地,在 C++ STL 中,`queue` 也是一种适配器容器,默认也采用 `deque` 实现[^1]。 引入必要的头文件: ```cpp #include <queue> ``` 下面展示如何定义以及操控队列对象: ```cpp std::queue<std::string> q; q.push("hello"); // 插入新元素到队尾 q.push("world"); while (!q.empty()) { std::cout << q.front() << ' '; // 输出队首元素 q.pop(); // 删除队首元素 } // 输出结果为:"hello world" ``` 除了基本功能外,还可以利用双端队列 `deque` 来构建更复杂的逻辑,比如循环缓冲区等特殊应用场景下的自定义行为[^2]。 对于两者的主要差异在于它们各自的操作模式——一个是 LIFO 而另一个则是 FIFO;此外就是具体方法上的不同之处,例如访问顶部/前端元素的方法名有所变化(`top()` vs `front()`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值