哪种数据结构最适合这种情况?

jma*_*erx 5 c++ data-structures

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

基本上:

我需要这样做:快速添加,快速删除和快速查找.

鉴于在任何给定时间,结构将具有大约10个对象,那么什么样的数据结构将是最佳的.

谢谢

Ale*_* C. 9

对于10个对象,任何东西都可以做(std::vector,dequeset),并且在分析之前没有人能分辨出哪个对象表现得更好.

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

不要使用std::list,作为一般建议.你需要一个令人信服的理由在C++中使用链表(常量时间拼接是一个,没有迭代器失效是另一个).其他数据结构对大多数操作(拼接除外)表现更好.在这里,我没有看到任何使用list而不是例如.set.

  • @neodelphi:搞清楚*要插入或删除*哪个集合比列表更快.所以我不会像你一样绝对.此外,在10个元素的向量中插入和移除可能比在列表中快得多(出于数据位置的原因).目前尚不清楚哪个容器的性能更好,但我坚信`std :: list`落后了.并且强制自己仅在需要时使用列表是个好主意,因为它们的整体性能非常差. (2认同)