c++ - 用于队列模拟的数组与双向链表

标签 c++ arrays queue doubly-linked-list

我正在为学校做一项作业,模拟学生排队和注册处打开多个窗口的情况。

我为学生准备了队列,但有人建议我对窗口使用数组来实现我们自己制作的队列类。
我不明白为什么除了学生时间递减之外,当我想知道关于每个窗口的其他变量时,为什么数组会起作用。

我只是在寻找一些方向或更深入的解释,说明如何使用数组来存储每个学生在窗口的时间,而不是另一个双向链表?

最佳答案

在我看来,学生的数量是可变的, window 的数量是固定的(建筑物通常不会经常更换)。如果我要在代码中对此进行表示,我会使用动态大小的容器(列表、 vector 、队列等)来包含所有学生,并使用固定大小的数组来存放寄存器。这将在代码中体现真实情况的意图,从而减少使用您的代码的其他人犯与注册办公室规模相关的任何错误的可能性。通常选择容器类型完全取决于其预期用途!

因此,您可以设计一个类来使用固定大小的数组来保存所有寄存器(或者甚至更好:模板指定的大小,因为您使用的是 C++)。然后,您可以使用给定的大小参数编写所有其他与 Registrar 相关的函数,从而永远不会在您的 Registrar 数组中越界。

最后:数组包含您希望它包含的任何信息。你可以让它只保存数字(比如 int),但你也可以让它保存任何类型的对象!我的意思是:创建一个 Registrar 类,其中包含您要为每个 Registrar 收集的所有信息。然后创建一个包含 Registrar 对象的数组。然后,无论何时访问数组中的单个元素,您都可以通过该单个引用访问单个注册商的所有信息。

关于c++ - 用于队列模拟的数组与双向链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29320541/

相关文章:

c++ - 在 Ubuntu 上为 OpenFrameworks 编译 Basler Pylon SDK

c++ - 如何重载条件运算符?

c++ - 编译器如何区分 C++ 中的私有(private)数据和公共(public)数据?

php - laravel 5.5 邮件通知不更新内容

java - PriorityQueue 是否保持自然顺序?

C++文件指针无法正常工作

Python 颜色图,但所有零值都映射为黑色

java - 二维数组问题Java

C - 'struct' 元素的动态数组

redis - Redis "Pattern: Reliable queue"的代码实现