初始化priority_queue最快的方式,可以在construction of a priority queue,選項(12)說:什麼是從unordered_set
template< class InputIt >
priority_queue(InputIt first, InputIt last,
const Compare& compare = Compare(),
Container&& cont = Container());
但我不知道怎麼OT使用。 我有一個非空的std::unordered_set<std::shared_ptr<MyStruct>> mySet
,我想將它轉換爲優先級隊列。我也創建了一個比較結構MyComparator
:
struct MyComparator {
bool operator()(const std::shared_ptr<myStruct>& a,
const std::shared_ptr<myStruct>& b){...}
};
現在我怎麼能以更好的方式構建新的priority_queue myQueue
?我用下面的,它的工作原理:
std::priority_queue<std::shared_ptr<MyStruct>, std::deque<std::shared_ptr<MyStruct>, MyComparator>
myQueue(mySet.begin(), mySet.end());
我既爲基準向量和雙端隊列,我覺得雙端隊列將跑贏矢量當尺寸比較大(〜30K)。 由於我們已經知道mySet
的大小,因此我應該創建具有該大小的雙端機。但是我怎麼能用我自己的比較器和預定義的deque來創建這個priority_queue,比如myDeque
?
你打算在事後插入更多的元素到優先級隊列中嗎? –
是的,算法會彈出最重的一個,檢查其狀態,並可能添加更多與最重的相關的對象。這種插入可能會發生很多次(大約是原始大小的一半)。 –