std::
priority_queue::emplace
公共成员函数 <queue>
template <class... Args> void emplace (Args&&... args);
构造并且插入元素
向priority_queue中添加一个新元素。
这个新元素以传递参数作为其构造函数的参数构造。
该成员函数调用底层容器的成员函数emplace_back,传递args,
然后通过在包含容器的所有元素的范围内调用push_heap算法,将其重新排序到其在堆中的位置。
☲ 参数
-
args
-
用于构造新元素的参数。
☉ 返回值
none
☣ 示例
// priority_queue::emplace
#include <iostream> // std::cout
#include <queue> // std::priority_queue
#include <string> // std::string
int main ()
{
std::priority_queue<std::string> mypq;
mypq.emplace("orange");
mypq.emplace("strawberry");
mypq.emplace("apple");
mypq.emplace("pear");
std::cout << "mypq contains:";
while (!mypq.empty())
{
std::cout << ' ' << mypq.top();
mypq.pop();
}
std::cout << '\n';
return 0;
} |
输出:
mypq contains: strawberry pear orange apple
✥ 复杂度
在底层容器上调用一次emplace_back,在包含底层容器所有元素的范围上调用一次push_heap。
⇄ 数据竞争
容器及其包含的所有元素都被修改。
☂ 异常安全性
提供与在基础容器对象上执行的操作相同级别的保证。
🍄 另请参阅
priority_queue::pop |
删除顶部元素(公众成员函数) |
priority_queue::push |
插入元素(公众成员函数) |