2012-07-02 86 views
1

這是在C++中用於可能包含重複項的整數的排序插入的理想STL容器。STL按排序順序存儲數字

+1

你想如何使用容器?容器要做什麼操作?這些操作中的每一個操作有多頻繁(相對)? (順便說一句:這個問題是一半烘烤,幾乎不可能沒有額外的信息回答,這使我想知道爲什麼最後票) –

+0

用於存儲整數排序容器使用索引像第二個最高e.t.c – titan

+0

多少個插入?與查找相比有多頻繁?容器是否已初始化,然後僅執行查找?它們是交錯的嗎?你仍然沒有回答關鍵問題。 –

回答

2

如果我理解你可能一個std :: multiset的 它將存儲重複,但是當你遍歷容器,你會得到他們的排序順序

0

兩個明顯的選擇是一個堆/ priority_queuemultiset 。堆將只允許您訪問任何點上的最大元素,而multiset將按排序順序存儲項目(帶有重複項),允許您遍歷它們。

有關您的特定問題的更多信息,可以提供更精確的答案。

+0

相同我們可以使用索引像數組訪問multiset中的元素? – titan

+0

@titan不,你不能使用索引訪問像數組。 – Jagannath

+0

@titan如果你想隨機訪問你的容器元素,然後使用'std :: map/std :: multimap' –

0

std::multiset可能是預期的答案。

如果域相對較小(特別是與發生次數相比),則可以使用計數排序來獲得較好的效果。您將使用std::vector<int>與域的大小。然後,該值成爲索引,並且計數成爲發生次數。

0

如果查找和插入與該量級交錯,我寧願建議一個簡單的向量,並在查找週期開始時對其進行排序。

0

我建議你如下:

  1. std::multiset<set>
  2. std::priority_queue<queue>頭中發現

您還可以將數據存儲到一個std::vector/std::deque/std::list,然後對它們進行排序使用在<algorithm>標題處找到的std::sort函數。