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

creating fixed size queue for c++

我开发了用 C++ 创建固定大小队列的代码。我对如何扩展 std::queue 以拥有此功能感到震惊。我查看了其他类似的 SO 问题,但他们没有给出关于如何做的明确示例 this.Is 我可以参考任何关于如何执行此操作的示例。谢谢

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;


}

您不应该扩展标准容器,因为它非常不安全。更好的解决方案是创建您自己的 class 并使用 std::queue 作为 class 成员以及您的 class.

所需的任何内部限制

这是将队列扩展为固定大小的方法。

#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;
};