为 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;
};
我开发了用 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;
};