其数据结构对象的快速查找功能列表
问题描述:
我有一个数据结构,必须对它进行查询,我想优化的东西...其数据结构对象的快速查找功能列表
struct Data
{
std::string id_;
double data_;
};
我目前使用一个std::vector<Data>
和std::find
算法,但我想知道如果另一个数据结构会更方便:
- 散列表?
- 地图?
- boost多索引容器?
- 其他的东西?
编辑:
每次我接收从网络I必须查找到该载体(具有id作为密钥)的消息,并且更新/检索某些信息。 (数据结构比在我的例子更多的领域)
EDIT2:
- 我不关心顺序。
- 我必须频繁地将元素插入/擦除数据结构。
答
这实际上取决于您的要求,但有两种可能性是对矢量进行排序并进行二分查找或使用地图。两者都可以在大约15分钟内实施,所以我建议你尝试两种方法。
编辑:既然你要添加和删除经常的事您的要求,你的数据的大小,我会使用一个unordered_map
(即哈希表)作为第一次尝试。您可以随时更改为其他容器。
答
这取决于您是否关心容器中元素的顺序。如果你照顾,你可以做得比现在更好。如果你不这样做,散列容器应该提供最快的查找。
但它也取决于其他因素。例如,如果您创建一次容器并且永远不会更改它,那么使用二进制搜索的有序向量可能是最好的。
你的目标是什么?你想如何使用它? – Nawaz 2011-05-31 07:04:42
你需要做什么样的查找?我的猜测是,给定一个'std :: string'你想查找'double'数据。 – 2011-05-31 07:06:39
@David:是的确切 – Guillaume07 2011-05-31 07:07:42