C++之容器queue

头文件<queue>:

包含两个类 queue 和 priority_queue

queue:

标准的FIFO队列。

queue的实现使用适配器模式。内部包含有一个隐含的容器。

隐含的容器至少实现以下方法:
    • empty
    • size
    • front
    • back
    • push_back
    • pop_front

queue本身实现的方法:






priority_queue:

优先级队列。是一个最大堆。

priority_queue的实现使用适配器模式。内部包含有一个隐含的容器。

隐含的容器至少实现以下方法:
    • empty
    • size
    • front
    • back
    • push_back
    • pop_front

priority_queue本身实现的方法:


使用:

pop函数,将弹出最大元素,即使back函数返回的那个元素。

C++ 中,`<queue>` 是标准模板库(STL)中的一个头文件,它定义了 `std::queue` 容器适配器。STL 容器分为“序列式容器”和“关联式容器”两大类。序列式容器中每个元素有固定位置,取决于插入时机和地点,底层是线性序列的数据结构,存储的是元素本身;关联式容器元素位置取决于特定排序准则,和插入顺序无关,存储的是 `<key, value>` 结构的键值对,数据检索时比序列式容器效率更高 [^1]。 `std::queue` 是一种先进先出(FIFO)的数据结构,它基于其他容器实现,属于容器适配器。`std::queue` 默认使用 `std::deque`(双端队列)作为底层容器。`<deque>`(double - ended queue)是一种双向开口的线性数据结构,兼顾了「动态数组的随机访问」和「链表的双端高效操作」,是 STL 中功能最灵活的容器之一,也是 `std::queue` 和 `std::stack` 的默认底层适配器(替代 `vector` 解决双端操作效率问题) [^2]。 虽然 `std::queue` 本身不是一个独立的容器类型,但它借助底层容器实现了队列的基本操作,如入队(`push`)、出队(`pop`)、访问队首元素(`front`)等操作。另外,`stack` 在进行 `push` 和 `pop` 时,实际上使用的是 `deque` 的 `push_back` 和 `pop_back`,`stack` 的 `empty` 和 `top` 也对应于 `deque` 的 `empty` 和 `back`,不过 `stack` 是改写了 `deque` 接口的适配器 [^4]。 以下是一个简单使用 `std::queue` 的示例代码: ```cpp #include <iostream> #include <queue> int main() { std::queue<int> myQueue; // 入队操作 myQueue.push(10); myQueue.push(20); myQueue.push(30); // 访问队首元素 std::cout << "Front element: " << myQueue.front() << std::endl; // 出队操作 myQueue.pop(); // 再次访问队首元素 std::cout << "Front element after pop: " << myQueue.front() << std::endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值