为 C++ 创建固定大小的队列

creating fixed size queue for c++

本文关键字:队列 C++ 创建      更新时间:2023-10-16

我开发了用于在 c++ 中创建固定大小队列的代码。我对如何扩展 std::queue 以具有此功能感到震惊。 我查看了其他类似的SO问题,但它们没有给出有关如何执行此操作的明确示例。关于如何做到这一点,有什么例子可以参考吗?谢谢

template<typename T>
class fixed_size_queue: public std::queue<T>
{
    public:
            fixed_size_queue(unsigned int size);    

};
void fixed_size_queue::fixed_size_queue(unsigned int size)
{
    this->size()= size;

}

你不应该扩展标准容器,因为它非常不安全。更好的解决方案是创建自己的类,并将std::queue用作类成员以及类所需的任何内部限制。

这就是扩展队列以具有固定大小的方法。

#include <iostream>
#include <queue>
template< typename T > 
class FixedQueue: public std::queue< T > { 
public:
    Processor( int size )
        : S( size )
    {   
        current = 0;
    }   
    int push( T value )
    {   
        if (is_full()) {
            std::cout << "Is full" << std::endl;
            return -1; 
        }   
        else {
            std::queue< T >::push( value );
            ++current;
        }   
    }
    void pop() 
    {   
        if (!std::queue< T >::empty()) {
            std::queue< T>::pop();
            --current;
        }   
    }
private:
    inline bool is_full() {
        return !( current < S );
    }   
    const int S;
    int current;
};