2011-05-31 101 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

這取決於您是否關心容器中元素的順序。如果你照顧,你可以做得比現在更好。如果你不這樣做,散列容器應該提供最快的查找。

但它也取決於其他因素。例如,如果您創建一次容器並且永遠不會更改它,那麼使用二進制搜索的有序向量可能是最好的。