繁体   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