РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
259 of 815 menu

Метод splice

Метод splice класса list перемещает элементы из одного списка в другой. В отличие от метода insert, который копирует элементы, splice изменяет связи между узлами, что делает операцию очень эффективной. Метод имеет несколько перегрузок. В первом варианте мы передаем позицию, куда следует вставить элементы, и список-источник. Во втором варианте дополнительно передается итератор, указывающий на перемещаемый элемент. В третьем варианте передается диапазон итераторов.

Синтаксис

// Переместить все элементы из other в позицию pos list.splice(pos, other) // Переместить элемент it из other в позицию pos list.splice(pos, other, it) // Переместить диапазон [first, last) из other в позицию pos list.splice(pos, other, first, last)

Пример

Давайте переместим все элементы из одного списка в другой:

#include <iostream> #include <list> using namespace std; int main() { list<int> lst1 = {1, 2, 3}; list<int> lst2 = {4, 5, 6}; lst1.splice(lst1.end(), lst2); for (int el : lst1) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 3 4 5 6

Пример

Давайте переместим только один элемент из одного списка в другой:

#include <iostream> #include <list> using namespace std; int main() { list<int> lst1 = {1, 2, 3}; list<int> lst2 = {4, 5, 6}; auto it = lst2.begin(); it++; lst1.splice(lst1.begin(), lst2, it); for (int el : lst1) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

5 1 2 3

Пример

Давайте переместим диапазон элементов из одного списка в другой:

#include <iostream> #include <list> using namespace std; int main() { list<int> lst1 = {1, 2, 3}; list<int> lst2 = {4, 5, 6, 7}; auto first = lst2.begin(); auto last = lst2.begin(); last++; last++; lst1.splice(lst1.end(), lst2, first, last); for (int el : lst1) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 3 4 5

Смотрите также

  • класс list,
    который представляет двусвязный список
  • метод insert,
    который вставляет элементы в список
  • метод erase,
    который удаляет элементы из списка
  • метод merge,
    который сливает два отсортированных списка
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить