最終更新日時(UTC): 2026年02月17日 14時22分33秒
Akira Takahashi が更新

履歴 編集

function template
<list>

# std::list::emplace_front(C++11)

    template <class... Args>
    void emplace_front(Args&&... args);                // (1) C++11
    template <class... Args>
    reference emplace_front(Args&&... args);           // (1) C++17
    template <class... Args>
    constexpr reference emplace_front(Args&&... args); // (1) C++26

## 概要

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

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

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

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

## 戻り値

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

## 計算量

定数時間

## 備考

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

## 例

    #include <iostream>
    #include <list>
    #include <utility>
    #include <string>

    int main()
    {
      std::list<std::pair<int, std::string>> ls;

      ls.emplace_front(1, std::string("world"));
      ls.push_front(std::make_pair(3, std::string("hello")));

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

### 出力

    3,hello
    1,world

## バージョン

### 言語

- C++11

### 処理系

- Clang: 3.0 ✅
- GCC: 4.6.4 ✅
- ICC: ??
- Visual C++: ??

## 関連項目

名前 | 説明
--- | ---
`emplace_back` | 末尾への直接構築による要素追加
`push_front` | 先頭に要素を追加する
`push_back` | 末尾に要素を追加する
`emplace` | 要素の直接構築による挿入
`insert` | 要素の挿入

## 参照

- N2680 Proposed Wording for Placement Insert (Revision 1)
- P0084R0 Emplace Return Type
- P0084R1 Emplace Return Type (Revision 1)
- P0084R2 Emplace Return Type (Revision 2)
- P3372R3 constexpr containers and adaptors