C 创建固定大小的队列

新手上路,请多包涵

C++ 中,如何创建一个简单的 固定大小队列

我在 Java 和 Python 中做过多次,但我正在寻找一种基于 C++ 的方法。

我需要一个只有 2 个元素的简单 FIFO 队列才能使用 pushpop 实用程序:我已经知道我可以实现自己的类来执行这种功能限制,但我的问题旨在了解是否存在任何可用的解决方案。

或者是否有可能使用数组完成相同的任务?那也行。

原文由 Employee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

您可以从队列继承,然后重新实现 push 方法。这是一个基本的例子。

 #include <queue>
#include <deque>
#include <iostream>

template <typename T, int MaxLen, typename Container=std::deque<T>>
class FixedQueue : public std::queue<T, Container> {
public:
    void push(const T& value) {
        if (this->size() == MaxLen) {
           this->c.pop_front();
        }
        std::queue<T, Container>::push(value);
    }
};

int main() {
    FixedQueue<int, 3> q;
    q.push(1);
    q.push(2);
    q.push(3);
    q.push(4);
    q.push(5);
    q.push(6);
    q.push(7);

    while (q.size() > 0)
    {
        std::cout << q.front() << std::endl;
        q.pop();
    }
}

这将打印

$ g++ fixedqueue.cpp -std=c++17 -o fixedqueue && ./fixedqueue
5
6
7

原文由 solinent 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏