具有快速查找功能的对象列表的数据结构

时间:2011-05-31 07:02:19

标签: c++

我有一个数据结构并且必须对其执行查找,我想优化一些事情......

struct Data
{
 std::string id_;
 double data_;
};

我目前使用的是std::vector<Data>std::find算法,但我想知道其他数据结构是否更方便:

  • 哈希表?
  • 地图?
  • 提升多指数容器?
  • 其他事情?

编辑:

每次我收到来自网络的消息时,我都必须查找此向量(id为key),并更新/检索一些信息。 (数据结构中的字段多于我的示例)

EDIT2:

  • 我不关心订单。
  • 我必须经常在此数据结构中插入/擦除元素。

2 个答案:

答案 0 :(得分:4)

这实际上取决于您的要求,但有两种可能性是对矢量进行排序并进行二分查找或使用地图。两者都可以在大约15分钟内实现,所以我建议你尝试这两种方法。

编辑:鉴于您要求经常添加和删除内容以及数据大小,我会使用unordered_map(即哈希表)作为第一次尝试。您以后可以随时更改为其他容器。

答案 1 :(得分:1)

这取决于您是否关心容器中元素的顺序。如果你照顾,你可以做得比现在更好。如果不这样做,散列容器应该提供最快的查找。

但这也取决于其他因素。例如,如果您创建一次容器并且从不更改容器,则可能是带有二分搜索的有序向量。