【发布时间】:2011-06-02 14:24:48
【问题描述】:
我正在尝试为游戏引擎设计一个任务调度程序。任务可以是动画、触发控制器等。
我的问题是选择什么容器。这个想法是:当你插入一个新任务时,容器必须重新排序并将任务放在适当的位置。一旦执行,任务可能会更改并再次安排或删除。这主要是push和pop。
但是,如果可能的话,如果我可以随机访问一个元素会很好,但不是至关重要的。无论容器是否支持具有相同键的一个或多个元素。
我认为优先队列符合我的需求,但我看到它是基于向量实现的,我认为这个容器必须以某种方式进行优化以推送和弹出。
意见?
【问题讨论】:
-
您通常以何种方式访问此队列?你会经常整理吗?如果/当您迭代它时,您会在迭代时访问每个任务吗?你会在排序时做同样的事情吗?任务 - 它们是指针还是任务的实际实例?
-
嗯,我打算使用这个系统的方式是:你创建一个任务,然后把这个任务插入到系统中(这是一个推送)。添加任务会如此频繁。然后,对于每个帧,您检查它是否需要在该帧中执行,如果需要,请执行此任务(弹出),您需要执行任务,检查是否是周期性的,如果需要,则安排(推送)。我唯一的问题(小)是找到按需销毁的任务,但我知道如何解决。任务是实例化,因为任务包含对象的函子以执行真正的功能
-
嗯,好吧,所以如果你想让 push'es 成为一个排序插入(我想这是因为我假设你的队列中有某种优先级......对吗?)并且您的数据相对较轻(一个仿函数),也许一些缓存友好(记住:保持数据关闭)二叉树是合适的?