Spec-Zone.ru › C++

std::hive<T,Allocator>::splice

void splice( hive& other );
(1) (начиная с C++26)
void splice( hive&& other );
(2) (начиная с C++26)
1,2) Переносит все элементы из other в *this. После выполнения операции контейнер other становится пустым.

Элементы не копируются и не перемещаются: изменяются только внутренние указатели блоков элементов hive. Зарезервированные блоки в other не переносятся в *this.

Итераторы и ссылки не становятся недействительными; итераторы на перемещённые элементы остаются действительными, но теперь указывают на элементы в *this, а не в other. Если std::addressof(other) == this равно false, итератор past-the-end становится недействительным для обоих контейнеров: other и *this.

Если выбрасывается исключение, операция не имеет эффекта.

Если std::addressof(other) == this равно true, поведение является ошибочным, и операция не имеет эффекта.

Поведение не определено, если выполняется любое из следующих условий:

  • get_allocator() != other.get_allocator(),
  • *this и other ссылаются на один и тот же объект.

Параметры

other - другой контейнер, из которого переносится содержимое

Сложность

1,2) Постоянная.

Исключения

1,2) std::length_error, если какие-либо активные блоки элементов other находятся за пределами capacity-limits, а также любые исключения, выбрасываемые аллокатором.

Пример

#include <hive>
#include <print>

int main()
{
    std::hive<int> hotel{1, 2, 3}, motel{4, 5};

    std::println("Before splice: hotel = {}, motel = {}", hotel, motel);

    hotel.splice(motel);

    std::println("After splice: hotel = {}, motel = {}", hotel, motel);
}

Вывод:

Before splice: hotel = [1, 2, 3], motel = [4, 5]
After splice: hotel = [1, 2, 3, 4, 5], motel = []

См. также

insert_range
вставляет диапазон элементов
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/hive/splice

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API