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) == thisがtrueである場合、その動作はエラー性動作(erroneous behavior)であり、何もしない。- 例外が送出された場合、何もしない。
- そうでなければ、
xの全ての要素を*thisに移動し、xを空にする。移動されたxの要素を指すポインタおよび参照は、*thisのメンバとしての同じ要素を指すようになる。移動された要素を指すイテレータは、引き続き同じ要素を指すが、xではなく*thisのイテレータとして振る舞う。
戻り値
なし
例外
xのアクティブブロックのうち、いずれかがblock_capacity_limits()の範囲内にない場合、length_error例外を送出する。また、アロケータが送出するあらゆる例外を送出する。
計算量
xの全ての要素ブロック数と*thisの全ての要素ブロック数の総和に対して線形時間
備考
xの予約ブロックは*thisに移動されない。addressof(x) == thisがfalseである場合、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
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌