我必須使用一個容器,這個容器的構造已經訂購了,我需要一個快速查找功能。我應該使用哪個容器快速查找元素,知道通過構建它已經訂購了?
我的想法是使用一個集合來利用它的set.find
,這應該足夠快,但構建我的集合set.insert
可能會很慢,因爲我已經知道元素是有序的!
對於這部分,我可以使用帶有vector.push_back
的矢量,但是我應該自己寫這個查找函數,它也會比set::find
慢......你對我有什麼建議?
編輯:
- 容器需要修改,但將永遠是有序的,並且其規模將始終是相同的(但我不知道它的先驗)
- 沒有重複值。
- 發現比插入更多。
- 我只需要知道它是否存在,而不是它的位置。
- 我找到了std :: binary_search。好嗎?
在向量(二進制搜索)上使用lower_bound或upper_bound函數。如果你想修改,使用set或map。 – SashaMN
我第二個SashaMNs的建議。此外,由於您可能知道條目的數量,因此可以使用「保留」通過使用適當的容量創建條目來避免不必要的調整大小。 –
插入與發現有多頻繁? –