c++自己编写一个队列类
时间: 2024-11-03 10:21:11 浏览: 17
C++利用链表模板类实现简易队列
5星 · 资源好评率100%
在C++中,你可以手动实现一个简单的队列类,通常基于模板和数组来存储元素。这里是一个基本的单向队列(FIFO,先进先出)的实现:
```cpp
template <typename T>
class Queue {
private:
std::size_t front; // 队首元素的索引
std::size_t rear; // 队尾元素的下一个位置
T elements[static_cast<std::size_t>(MAX_SIZE)]; // 存储元素的数组,MAX_SIZE是预设的最大容量
public:
Queue() : front(0), rear(0) {}
bool is_empty() const { return front == rear; }
bool is_full() const { return (rear + 1) % MAX_SIZE == front; }
void enqueue(const T& item) {
if (is_full()) {
throw std::runtime_error("Queue is full");
}
elements[rear] = item;
rear = (rear + 1) % MAX_SIZE;
}
T dequeue() {
if (is_empty()) {
throw std::runtime_error("Queue is empty");
}
T item = elements[front];
front = (front + 1) % MAX_SIZE;
return item;
}
// 其他辅助函数如查看队首元素等...
};
```
这个队列类有以下几个关键部分:
1. 它有一个模板类型`T`,这意味着它可以存储任何类型的元素。
2. `front`和`rear`分别表示队头和队尾的位置。
3. `enqueue()`用于添加元素到队尾,如果队满则抛出异常;`dequeue()`用于移除并返回队首元素,如果队空则抛出异常。
阅读全文