最終更新日時:
が更新

履歴 編集

function
<forward_list>

std::forward_list::emplace_after(C++11)

template <class... Args>
iterator emplace_after(const_iterator position, Args&&... args);

概要

任意の位置に直接構築で要素を挿入する。

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

第1パラメータpositionで指定された要素の後ろに追加する。

要件

第1パラメータpositionが、before_begin()もしくは[begin(), end()]の範囲の間接参照可能なイテレータであること。

戻り値

挿入された要素を指すイテレータ

計算量

定数時間

#include <iostream>
#include <forward_list>
#include <iterator>
#include <utility>
#include <string>
#include <algorithm>

int main()
{
  std::forward_list<std::pair<int, std::string>> ls = {
    {1, "a"},
    {2, "b"},
    {4, "d"}
  };

  ls.emplace_after(std::next(ls.begin(), 1), 3, "c");

  std::for_each(ls.begin(), ls.end(), [](decltype(ls)::const_reference x) {
    std::cout << x.first << ',' << x.second << std::endl;
  });
}

出力

1,a
2,b
3,c
4,d

バージョン

言語

  • C++11

処理系

  • Clang: ??
  • GCC:
  • GCC, C++11 mode: 4.7.0
  • ICC: ??
  • Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1
    • Visual C++ 10.0は、可変引数テンプレートに対応していないため、argsに1つしか実引数を渡せない。
    • Visual C++ 11.0は、可変引数テンプレートに対応していないため、不完全な実装である。

参照