簡體   English   中英

priority_queue :: emplace調用push_heap嗎?

[英]priority_queue::emplace calls push_heap?

根據CPP參考std::priority_queue::emplace “有效調用”

c.emplace_back(std::forward<Args>(args)...); 
std::push_heap(c.begin(), c.end(), comp);

“有效”在這里是什么意思? 這是否意味着emplace具有與那些調用相同的功能,或者emplace是使用這些調用從字面上實現的(我的理解是實現留給了編譯器)。 如果按emplace實現emplace ,那效率不低嗎? 如果將一個元素添加到現有堆中,則無需對整個堆進行堆化。

該實現當然不必調用該算法,但可能需要調用該算法。 emplacing()元素之后,它將向根移動,直到恢復了堆不變式。 需要注意的是push_heap() 觸及整個堆:這將是make_heap() 相反, push_heap()僅處理添加一個新元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM