[英]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.