我想用c++写一个队列类,看到网上有结构体是这么写的typedef struct Queue_tag{
int data[MAXSIZE];
int front,rear;
}
QUEUE;但是实例化类时好像只能通过改写MAXSIZE来更改队列初始化大小我想在构造函数里输入参数来确定大小,于是我写了下面的结构体,然后在函数里new了一个随参数改变长度的数组,并让*arr指向这个数组,请问这么做有没有问题,我看好多代码数组在结构体里都直接确定了大小,那有没有什么办法可以不通过更改宏定义而是通过构造函数来初始化大小呢struct queue
{
T *arr;
T *head;
T *tail;}*q;
void initQueue(int lenght)
{
q = new queue;
T *p = new T[lenght];
q->arr = p;
q->head = p;
q->tail = p;
}
2 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
template<T>
class QUEUE
{
private:
T* data;
int front;
int rear;
int size;
public:
QUEUE() {}
QUEUE(int sz)
{
data = new T(sizeof(T) * sz);
size = sz;
/*your code below*/
}
~QUEUE()
{
delete data;
data = nullptr;
}
};
题主如果是练手,可以像上面这样,自己重载一个构造函数就行了。如果是为了项目要用,直接用std::queue。另外一般的FIFO队列,用链表实现更方便,而且易于增删元素。这种用数组实现的一般用于循环队列。
- 2 回答
- 0 关注
- 720 浏览
添加回答
举报
0/150
提交
取消