splice
Материал из cppreference.com
Синтаксис:
#include <list> void splice( iterator pos, list& lst ); void splice( iterator pos, list& lst, iterator del ); void splice( iterator pos, list& lst, iterator start, iterator end );
Функция splice перемещает один или больше элементов из lst в место перед pos. Первый перегруженный метод перемещает все элементы в lst, второй перемещает только элемент, на который указывает del, а третий перемещает все элементы в диапазоне включая start и не включая end.
splice просто перемещает элементы и одного списка в другой и на самом деле ничего не копирует и не удаляет. Поэтому функция splice выполняется за константное время, кроме третьего случая, которому нужно не больше линейного времени, если lst не равен this. Тем не менее, так как size линейна, то splice константна для всех трех.