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

时间:2011-07-31 16:06:34

标签: c++ data-structures

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

基本上是这样的:

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

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

由于

4 个答案:

答案 0 :(得分:9)

有10个对象可以执行任何操作(std::vectordequeset),并且在分析之前没有人能够确定哪个对象表现得更好。

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

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

答案 1 :(得分:1)

我建议std::list因为它完全适合插入和删除元素。

答案 2 :(得分:0)

快速添加,快速删除和快速查找,您不需要太多!鉴于你说的我会说链表,但它也取决于添加,删除和发现的频率。如果您发现的频率远高于添加或删除内容的更改。

真正唯一的方法是尝试一些不同的选择并计算时间。

答案 3 :(得分:0)

我认为链接列表最好。鉴于规模较小,转移指针的行为不会影响性能。