public member function
<queue>

std::priority_queue::emplace

template <class... Args> void emplace (Args&&... args);
構造並插入元素
priority_queue 新增一個新元素。新元素將在原地構造,並將 args 作為其建構函式的引數傳遞。

此成員函式實際上會呼叫底層容器的成員函式 emplace_back,將 args 轉發給它,然後透過對包含容器中所有元素的範圍呼叫 push_heap 演算法來將其重新排序到中的位置。

引數

args
轉發給構造新元素的引數。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 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

資料競爭

容器及其最多所有包含的元素都會被修改。

異常安全

提供與對底層容器物件執行的操作相同的保證級別。

另見