为 C++ 创建固定大小的队列
creating fixed size queue for c++
我开发了用于在 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;
};
相关文章:
- boost::进程间消息队列引发错误
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- Android NDK传感器向事件队列报告奇怪的间隔
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 使用2个键的cpp-stl::优先级队列排序不正确
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 在一个读写器队列中,我可以用volatile替换原子吗
- 为什么我的多线程作业队列崩溃
- 尝试将lambda函数放在队列中时出现一般分配器错误(可能是与unique_ptr有关的错误)
- 使用"Task"函数指针队列定义作业管理器
- 在c++队列中使用pop和visit实现线程安全
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 打印优先级队列
- 共享队列的线程安全
- 带自定义比较器的最小优先级队列
- 在 Vulkan Qt 中获取队列系列
- 堆栈和队列是否像C++中的数组一样传递?
- 在C++中创建队列 - 什么是 malloc 错误?
- 优先级队列自定义比较器