最終更新日時:
が更新

履歴 編集

function
<hive>

std::hive::splice(C++26)

void splice(hive& x);  // (1) C++26
void splice(hive&& x); // (2) C++26

概要

他のhiveオブジェクトxの全ての要素を*thisに移動して連結する。

事前条件

get_allocator() == x.get_allocator()trueであること。

効果

  • addressof(x) == thistrueである場合、その動作はエラー性動作(erroneous behavior)であり、何もしない。
  • 例外が送出された場合、何もしない。
  • そうでなければ、xの全ての要素を*thisに移動し、xを空にする。移動されたxの要素を指すポインタおよび参照は、*thisのメンバとしての同じ要素を指すようになる。移動された要素を指すイテレータは、引き続き同じ要素を指すが、xではなく*thisのイテレータとして振る舞う。

戻り値

なし

例外

xのアクティブブロックのうち、いずれかがblock_capacity_limits()の範囲内にない場合、length_error例外を送出する。また、アロケータが送出するあらゆる例外を送出する。

計算量

xの全ての要素ブロック数と*thisの全ての要素ブロック数の総和に対して線形時間

備考

  • xの予約ブロックは*thisに移動されない。
  • addressof(x) == thisfalseである場合、x*thisの両方の終端イテレータを無効化する。

#include <hive>
#include <print>

int main()
{
  std::hive<int> h1 = {1, 2, 3};
  std::hive<int> h2 = {4, 5, 6};

  // h2の全ての要素をh1に移動して連結する
  h1.splice(h2);

  std::println("h1.size() = {}", h1.size());
  std::println("h2.empty() = {}", h2.empty());
}

出力

h1.size() = 6
h2.empty() = true

バージョン

言語

  • C++26

処理系

関連項目

参照