2011-05-31 55 views
1

我有一个数据结构,必须对它进行查询,我想优化的东西...其数据结构对象的快速查找功能列表

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

我目前使用一个std::vector<Data>std::find算法,但我想知道如果另一个数据结构会更方便:

  • 散列表?
  • 地图?
  • boost多索引容器?
  • 其他的东西?

编辑:

每次我接收从网络I必须查找到该载体(具有id作为密钥)的消息,并且更新/检索某些信息。 (数据结构比在我的例子更多的领域)

EDIT2:

  • 我不关心顺序。
  • 我必须频繁地将元素插入/擦除数据结构。
+0

你的目标是什么?你想如何使用它? – Nawaz 2011-05-31 07:04:42

+1

你需要做什么样的查找?我的猜测是,给定一个'std :: string'你想查找'double'数据。 – 2011-05-31 07:06:39

+0

@David:是的确切 – Guillaume07 2011-05-31 07:07:42

回答

4

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

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

1

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

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