Data structures 队列优于循环队列的任何用例?
循环队列显然更好,因为它帮助我们使用弹出元素所留下的空白空间。它还节省了每次pop后用于元素横向移动的时间 但是,有没有比使用循环队列更适合使用队列的用例呢 队列定义=我们将使用线性阵列实现。遵循FIFO且无覆盖 循环队列的定义=环形缓冲区实现。跟随先进先出。没有覆盖 注意:在许多语言中,Data structures 队列优于循环队列的任何用例?,data-structures,queue,Data Structures,Queue,循环队列显然更好,因为它帮助我们使用弹出元素所留下的空白空间。它还节省了每次pop后用于元素横向移动的时间 但是,有没有比使用循环队列更适合使用队列的用例呢 队列定义=我们将使用线性阵列实现。遵循FIFO且无覆盖 循环队列的定义=环形缓冲区实现。跟随先进先出。没有覆盖 注意:在许多语言中,队列只是一个接口,没有说明任何有关实现的内容 当使用基于数组的循环队列(也称为环形缓冲区)时,必须处理推送到完全缓冲区的情况。你可以: 忽略插入 覆盖最早的条目 阻塞,直到有空间为止 (重新)分配内存并复制所
队列
只是一个接口,没有说明任何有关实现的内容
当使用基于数组的循环队列(也称为环形缓冲区)时,必须处理推送到完全缓冲区的情况。你可以:
链表
或其他类型的动态实现,例如deque
示例用例是任务,您必须实现稳定的帧/采样率或吞吐量,并且不能容忍口吃,例如:
- 实时视频和音频处理
- 实时渲染
- 联网
- 在推送新作业时,如果不希望线程阻塞太长时间,则为线程池
(除了略高的实现复杂性之外。) <>代码> STD: C++中的队列默认使用<代码> DEQu< /COD>作为底层容器。code>deque本质上是一个动态数组,对于大多数用例来说,它似乎是一个很好的基础,因为它将内存分配成小块,从而减少了口吃。注意:在许多语言中,
队列
只是一个接口,没有说明任何实现
当使用基于数组的循环队列(也称为环形缓冲区)时,必须处理推送到完全缓冲区的情况。你可以:
链表
或其他类型的动态实现,例如deque
示例用例是任务,您必须实现稳定的帧/采样率或吞吐量,并且不能容忍口吃,例如:
- 实时视频和音频处理
- 实时渲染
- 联网
- 在推送新作业时,如果不希望线程阻塞太长时间,则为线程池
(除了略高的实现复杂性之外。)
<>代码> STD: C++中的队列默认使用<代码> DEQu< /COD>作为底层容器。code>deque本质上是一个动态数组,它似乎是大多数用例的良好基础,因为它将内存分配为小块,因此减少了口吃。很抱歉没有定义数据结构。我已经编辑了这个问题。你能提供一个实际的用例吗?很抱歉没有定义数据结构。我已经编辑了这个问题。你能提供一个同样的实际用例吗?循环队列并不是在所有情况下都“明显更好”。特别是,如果您需要一个无界队列,那么这是一个糟糕的选择,因为当项目数超过预先分配的大小时,您最终不得不重新分配,而当项目数减少时,阵列前端就有未使用的空间。链表是实现无界队列的更好方法。在本例中,我们使用数组实现,因此两者都是有界的。循环队列并非在所有情况下都“明显更好”。特别是,如果您需要一个无界队列,那么这是一个糟糕的选择,因为当项目数超过预先分配的大小时,您最终不得不重新分配,而当项目数减少时,阵列前端就有未使用的空间。链表可以更好地实现无界队列。在本例中,我们使用数组实现,因此两者都是有界的。