【问题标题】:Fastest data structure for inserting data, not for searching用于插入数据而非搜索的最快数据结构
【发布时间】:2013-06-25 03:46:40
【问题描述】:

谁能告诉我哪个是插入数据最快的数据结构。我的要求是加载人名,然后以超快的速度检索他们。没有排序,搜索特定名称等问题,甚至没有记忆,因为总人数可能不超过20人。唯一的要求是加载人员并在稍后阶段检索名称。 有人知道吗?

【问题讨论】:

  • 哈希表应该符合要求。除此之外的任何事情似乎都过大了。
  • 既然你知道上限,我觉得静态数组是个不错的选择。 @squiguy- 为什么是哈希表?他不是以名字为关键字搜索。
  • 检索名称... - 相同的顺序? - 任何订单都可以吗? - 具体名称?

标签: c++ data-structures


【解决方案1】:

厚颜无耻的回答:如果您进行插入而不做其他事情,那么最简单的数据结构根本就什么都不是——只是不存储任何东西。这使得插入是即时的,因为您完全没有做任何插入操作。

更现实的答案:如果您只是想尽可能快地存储一堆数据并且您对总元素的数量有上限,那么只需使用数组并跟踪下一个空闲索引。如果数组存储指向元素的指针,则每次插入都是指针赋值加上下一个空闲索引的增量。如果您要存储副本,则每次插入都会创建一个副本(无论如何您都必须这样做)和一个增量。由于存储元素的任何结构都必须存储指针或复制到它,因此开销是单个增量,我相当有信心它会尽可能便宜。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    除了检查答案中的舌头(这是我的第一个想法)并且您最多有 20 个人,只需使用数组即可。

    【讨论】:

    • 谢谢大家。我认为数组将是我的答案。我想知道你们是如何立即回答问题的,我发布问题的那一刻,你们就回复了。太棒了!!!
    【解决方案3】:

    如果您确定总对象/节点将始终小于 20,则最好使用数组。检索使用数组中的索引进行,并且是最快的。 如果您不确定数据结构的大小,那么我会建议一个列表,因为如果您不是在寻找插入顺序,那么在列表中插入是最快的。如果需要插入顺序,则使用链表。 Hashtable 可能不是一个选项,因为它有额外的同步开销,这里不需要。 如果您想避免重复并且不担心检索顺序,可以使用 Set 接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2015-11-10
      • 2011-05-11
      • 1970-01-01
      • 2014-03-09
      相关资源
      最近更新 更多