c++用vector实现定长队列
创始人
2025-06-01 20:08:39
0

目录

    • queue实现
    • vector实现

我们可以用queue或vector实现定长队列,但是如果我们有遍历定长队列的需求的话,使用queue不是一个好的选择,因为queue本身不支持。

queue实现

C++中的queue标准库提供了一个简单易用的队列容器,可以用来实现定长队列。下面是一段示例代码:

#include 
#include using namespace std;int main()
{queue q;int maxlen = 5; // 队列最大长度for(int i = 1; i <= 10; i++){if(q.size() == maxlen){q.pop();}q.push(i);cout << "队列元素:";while(!q.empty()){cout << q.front() << " ";q.pop();}cout << endl;}return 0;
}

上述代码中,我们定义了一个queue容器,然后通过循环向队列中添加元素。当队列长度达到最大长度时,就要删除队首元素以保持队列长度不变。最后,我们遍历队列输出所有元素。

vector实现

这里也是用模板泛化一下

#include 
#include using namespace std;template
class FixedQueue {
private:vector q;size_t size;
public:FixedQueue(size_t s) : size(s) {q.reserve(size);}void push(const T& t) {if (q.size() >= size) {q.erase(q.begin());}q.push_back(t);}T pop() {T t = q.front();q.erase(q.begin());return t;}T& front() {return q.front();}T& back() {return q.back();}bool empty() const {return q.empty();}size_t getSize() const {return q.size();}void clear() {q.clear();}
};int main() {FixedQueue fq(5);fq.push(1);fq.push(2);fq.push(3);fq.push(4);fq.push(5);fq.push(6);fq.push(7);cout << fq.front() << endl;cout << fq.back() << endl;fq.pop();cout << fq.front() << endl;cout << fq.back() << endl;cout << fq.empty() << endl;cout << fq.getSize() << endl;fq.clear();cout << fq.empty() << endl;cout << fq.getSize() << endl;return 0;
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...