我有一个数据结构并且必须对其执行查找,我想优化一些事情......
struct Data
{
std::string id_;
double data_;
};
我目前使用的是std::vector<Data>
和std::find
算法,但我想知道其他数据结构是否更方便:
编辑:
每次我收到来自网络的消息时,我都必须查找此向量(id为key),并更新/检索一些信息。 (数据结构中的字段多于我的示例)
EDIT2:
答案 0 :(得分:4)
这实际上取决于您的要求,但有两种可能性是对矢量进行排序并进行二分查找或使用地图。两者都可以在大约15分钟内实现,所以我建议你尝试这两种方法。
编辑:鉴于您要求经常添加和删除内容以及数据大小,我会使用unordered_map
(即哈希表)作为第一次尝试。您以后可以随时更改为其他容器。
答案 1 :(得分:1)
这取决于您是否关心容器中元素的顺序。如果你照顾,你可以做得比现在更好。如果不这样做,散列容器应该提供最快的查找。
但这也取决于其他因素。例如,如果您创建一次容器并且从不更改容器,则可能是带有二分搜索的有序向量。