最終更新日時(UTC):
が更新

履歴 編集

function template
<deque>

std::deque::emplace_back(C++11)

template <class... Args>
void emplace_back(Args&&... args);      // C++14 まで

template <class... Args>
reference emplace_back(Args&&... args); // C++17 から

概要

直接構築で新たな要素を末尾に追加する。

この関数の引数 args... は、要素型 value_type のコンストラクタ引数である。当関数の内部で要素型 value_type のコンストラクタを呼び出し、追加する要素を構築する。

テンプレートパラメータ制約

  • value_type は、コンテナに対して args から直接構築可能であること

戻り値

  • C++14 まで:なし
  • C++17 から:構築した要素への参照

計算量

定数時間

備考

  • この関数の呼び出し後、全てのイテレータは無効化されるが、参照は無効化されない。
  • 操作中に例外が発生した場合、副作用は発生しない。

#include <iostream>
#include <deque>
#include <utility>
#include <string>

int main()
{
  std::deque<std::pair<int, std::string>> c;

  c.emplace_back(3, std::string("hello"));
  c.push_back(std::make_pair(1, std::string("world")));

  for (const auto& x : c) {
    std::cout << x.first << ',' << x.second << std::endl;
  }
}

出力

3,hello
1,world

バージョン

言語

  • C++11

処理系

  • Clang: ??
  • GCC: 4.7.0
  • ICC: ??
  • Visual C++: 2012 , 2013
    • 2010にもemplace_backは存在するが、push_back相当の機能しかない。

関連項目

名前 説明
emplace_front 先頭に要素を直接構築で追加する
push_front 先頭に要素を追加する
push_back 末尾に要素を追加する
insert 任意の位置に要素を追加する

参照