我正在考虑使用数组实现有界队列(固定容量)。然后我偶然发现了这个 wiki-article在有界队列上。它提到:
An array is inefficient because of time spent copying items to the front of the queue
我不太明白这是怎么回事?当我们入队或出队时,我们只是将索引更新为头或尾。我们在哪里将项目复制到队列的前面?
最佳答案
没有复制 - 声明不正确。如果您回顾文章的历史,有人拥有确实移动了所有项目的代码,但该代码已被您现在看到的版本所取代,并且不正确的陈述留在那里。此外,那里的 C++ 代码中至少存在一处错误。在 enqueue() 中,条件 if(tail<head+QMAX)
永远不会失败,因为给定的代码尾部永远不会大于或等于 QMAX。
关于arrays - 为什么在有界队列中使用数组作为数据结构是个坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5241697/