public member function
<deque>

std::deque::emplace_back

template <class... Args>  void emplace_back (Args&&... args);
在list的末尾構造並插入元素
deque 的末尾(在其當前最後一個元素的後面)插入一個新元素。該新元素使用 args 作為其建構函式的引數,就地構造。

這會將容器的 size 有效地增加一。

元素透過呼叫 allocator_traits::construct 並轉發 args 來就地構造。

還有一個類似的成員函式 push_back,它會複製或移動一個現有物件到容器中。

引數

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

返回值

無。

新元素的儲存使用allocator_traits<allocator_type>::construct()分配,這在失敗時可能會丟擲異常(對於預設的 allocatorbad_alloc如果分配請求不成功,則丟擲)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// deque::emplace_from
#include <iostream>
#include <deque>

int main ()
{
  std::deque<int> mydeque = {10,20,30};

  mydeque.emplace_back (100);
  mydeque.emplace_back (200);

  std::cout << "mydeque contains:";
  for (auto& x: mydeque)
    std::cout << ' ' << x;
  std::cout << '\n';

  return 0;
}
輸出
mydeque contains: 10 20 30 100 200


複雜度

常量。

迭代器有效性

所有與此容器相關的迭代器都將失效,但指標和引用保持有效,指向它們在呼叫前所指向的相同元素。

資料競爭

容器將被修改。
呼叫不會訪問任何容器中的元素:併發訪問或修改它們是安全的(儘管請參見上面的迭代器有效性)。

異常安全

強保證:如果丟擲異常,容器沒有發生變化。
如果 allocator_traits::construct 不支援相應的引數,將導致未定義行為

另見