对于我的游戏,在对象进入传感器时,我需要将其添加到一个列表中,在对象离开传感器时,需要从该列表中将其移除。我还需要能够快速找到该对象。
因此,我需要实现以下功能:
快速添加、快速删除和快速查找。
考虑到在任何时候,该数据结构大约会有10个对象,请问使用哪种数据结构最好?
谢谢。
对于我的游戏,在对象进入传感器时,我需要将其添加到一个列表中,在对象离开传感器时,需要从该列表中将其移除。我还需要能够快速找到该对象。
因此,我需要实现以下功能:
快速添加、快速删除和快速查找。
考虑到在任何时候,该数据结构大约会有10个对象,请问使用哪种数据结构最好?
谢谢。
当使用10个对象时,任何容器(如std::vector
,deque
或set
)都可以胜任,且在进行性能分析之前无法确定哪种容器的性能更好。
如果您不知道该使用什么容器,也许您会发现std::set
具有更好的语法来查找元素。在这种情况下,我会使用它,因为我不想写std::find(v.begin(), v.end(), sensor)
,而可以简单地写s.find(sensor)
。
总的来说,不要使用std::list
。在C++中使用链表需要一个强有力的理由(如常数时间拼接操作),而另一些数据结构在大多数操作中执行得更好(除了拼接操作)。在这里,我看不到使用list
而不是例如set
的任何意义。
std::list
的表现不如其他容器。强制自己仅在必要时使用链表是一个好主意,因为它们的整体性能非常差。 - Alexandre C.std::list
,因为它非常适合插入和删除元素。快速添加、快速删除和快速查找,你要求不多啊!根据你的说法,我会建议使用链表,但这也取决于添加、删除和查找的频率。如果你更频繁地进行查找而不是添加或删除,请做出相应的改变。
实际上,唯一的方法就是尝试几种不同的选择并计时。
我认为链表是最好的选择。由于规模较小,移动指针的操作不会影响性能。