最終更新日時: 2026年03月30日 18時31分10秒 (JST)
Akira Takahashi が更新

履歴 編集

function template
<inplace_vector>

# std::inplace_vector::emplace(C++26)

    template <class... Args>
    constexpr iterator emplace(const_iterator position, Args&&... args); // (1) C++26

## 概要

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

引数`args...`から直接構築した要素を`position`の前に挿入する。

## 戻り値

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

## 例外

`size() == N`の場合、`bad_alloc` 例外を送出する。

## 計算量

挿入位置から`end()`までの要素数に対して線形時間。

## 例

    #include <print>
    #include <inplace_vector>
    #include <string>
    #include <utility>

    int main()
    {
      std::inplace_vector<std::pair<int, std::string>, 5> iv;

      iv.emplace(iv.begin(), 1, "one");
      iv.emplace(iv.end(), 3, "three");
      iv.emplace(iv.begin() + 1, 2, "two");

      for (const auto& [k, val] : iv) {
        std::println("{}:{}", k, val);
      }
    }

### 出力

    1:one
    2:two
    3:three

## バージョン

### 言語

- C++26

### 処理系

- Clang: 23 ✅
- GCC: 16 ✅
- Visual C++: 2026 Update 2 ❌

## 参照

- P0843R14 `inplace_vector`