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

履歴 編集

function
<inplace_vector>

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

    constexpr iterator
      insert(const_iterator position,
             const T& x);              // (1) C++26

    constexpr iterator
      insert(const_iterator position,
             T&& x);                   // (2) C++26

    constexpr iterator
      insert(const_iterator position,
             size_type n,
             const T& x);              // (3) C++26

    template <class InputIterator>
    constexpr iterator
      insert(const_iterator position,
             InputIterator first,
             InputIterator last);      // (4) C++26

    constexpr iterator insert(const_iterator position, initializer_list<T> il); // (5) C++26

## 概要

任意の位置に新たな要素を挿入する。

- (1) : `position`の前に`x`のコピーを挿入する。
- (2) : `position`の前に`x`をムーブ挿入する。
- (3) : `position`の前に`n`個の`x`のコピーを挿入する。
- (4) : `position`の前にイテレータ範囲`[first, last)`の要素を挿入する。
- (5) : `position`の前に初期化子リスト`il`の要素を挿入する。

## 戻り値

挿入された要素を指すイテレータ。(3), (4), (5)では挿入された最初の要素を指すイテレータ。要素が挿入されなかった場合は`position`を指すイテレータ。

## 例外

挿入後のサイズが`N`を超える場合、`bad_alloc` 例外を送出する。

## 計算量

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

## 例

    #include <print>
    #include <inplace_vector>

    int main()
    {
      std::inplace_vector<int, 10> iv = {1, 2, 3};

      // (1) 先頭にコピー挿入
      iv.insert(iv.begin(), 0);

      // (3) 末尾に2個の9を挿入
      iv.insert(iv.end(), 2, 9);

      // (5) 初期化子リストで挿入
      iv.insert(iv.begin() + 2, {10, 20});

      for (int x : iv) {
        std::println("{} ", x);
      }
    }

### 出力

    0
    1
    10
    20
    2
    3
    9
    9

## バージョン

### 言語

- C++26

### 処理系

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

## 参照

- P0843R14 `inplace_vector`