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

履歴 編集

function template
<vector>

std::vector::insert_range(C++23)

template <container-compatible-range<T> R>
constexpr iterator insert_range(const_iterator pos, R&& rg); // C++23

概要

Rangeの各要素を任意の位置に挿入する。

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

T*ranges::begin(rg)からvectorコンテナへのEmplaceConstructibleであり、かつ型TMoveConstructibleMoveAssignableSwappableであること。

効果

Rangergの各要素を、posの直前に挿入する。

戻り値

挿入されたRangergの最初の要素を指すイテレータ。rgが空の場合はpos

計算量

再確保が発生する場合は要素を挿入した後のvectorの要素数に比例し、それ以外の場合は挿入された要素数 + posからvector末尾までの距離に比例する。

C++26 : Rranges::approximately_sized_rangeであり、ranges::distance(rg) <= ranges::reserve_hint(rg)trueの場合、再確保は高々1回しか行われない。Rranges::forward_rangeで、かつranges::approximately_sized_rangeではない場合も同様である。

#include <iostream>
#include <iterator>
#include <vector>

int main()
{
  std::vector<int> v = {1, 2, 3};
  const int a[3] = {4, 5, 6};

  // Rangeを1番目と2番目の要素の間に挿入
  v.insert_range(std::next(v.begin()), a);

  for (int i : v) {
    std::cout << i << " ";
  }
  std::cout << std::endl;
}

出力

1 4 5 6 2 3 

関連項目

名前 説明
insert 要素の挿入
emplace 要素の直接構築による挿入

参照