哪种数据结构最适合这个

Which data structure would be best for this?

本文关键字:数据结构      更新时间:2023-10-16

对于我的游戏,当对象进入传感器时,我需要将其添加到列表中,当对象离开传感器时,它需要从列表中删除。我还需要快速找到那个对象。

所以:

我需要它做:快速添加,快速删除,快速查找。

什么类型的数据结构最适合这种情况,在任何给定的时间,该结构将有大约10个对象。

谢谢

对于10个对象(std::vector, dequeset),没有人可以在分析之前判断哪个对象表现更好。

如果你不知道该用什么,也许你会发现std::set有一个更好的语法来查找元素。这就是我在这种情况下要使用的,因为我不想在可以直接写s.find(sensor)的地方写std::find(v.begin(), v.end(), sensor)

作为一般建议,不要使用std::list。在c++中使用链表需要一个令人信服的理由(常数时间拼接是一个,没有迭代器无效是另一个)。其他数据结构在大多数操作中表现更好(拼接除外)。在这里,我不认为使用list而不是eg有任何意义。set

我建议使用std::list,因为它非常适合插入和删除元素

快速添加,快速删除和快速查找,你不需要太多做你!鉴于你所说的,我会说是链表,但这也取决于添加,删除和查找的频率。如果你发现的东西比你添加或删除的东西要频繁得多,那就改变吧。

唯一的方法就是尝试一些不同的选择并计时。

我认为链表是最好的。考虑到较小的大小,移动指针的行为不会影响性能。