【问题标题】:which data structure for a list of object with fast lookup feature具有快速查找功能的对象列表的数据结构
【发布时间】:2011-05-31 07:02:19
【问题描述】:

我有一个数据结构,必须对其执行查找,我想优化一些东西...

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

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

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

编辑:

每次我收到来自网络的消息时,我都必须查找这个向量(以 id 作为键),并更新/检索一些信息。 (数据结构比我的例子有更多的字段)

EDIT2:

  • 我不在乎订单。
  • 我必须经常在这个数据结构中插入/擦除元素。

【问题讨论】:

  • 你的目标是什么?你想怎么用这个?
  • 您需要进行什么样的查找?我的猜测是,给定std::string,您想查找double 数据。
  • 向量中有多少个元素?
  • @Neil:大约 100 到 300

标签: c++


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 2011-05-17
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多