Не понимаю, как использовать splice()

У меня есть задача. Мне нужно с 5 элемента списка (list) Y переместить первые 3 элемента списка (list) X. Я написал код - полный бред. Он даже не компилируется. Погуглил синтаксис - нагуглил. Но ничего не понял. Даже не понимаю, как работают примеры, которые там приводятся. Вопрос: как пользоваться этой функцией? Буду очень благодарен за доступный для начинающего ответ.

Сам код:

cout << " 8) Переместить первые три элемента первого списка во второй список в позицию, которая начинается с пятого элемента.\n";
cout << " 8) Вывести измененный список на экран.\n";
cout << "Исходные списки:\n";
cout << "X -->> "; ShowList(X);
cout << "Y -->> "; ShowList(Y);
cout << "Изменяю список...\n"; cout << "Y -->> "; 
Y.splice(Y.begin(), X, 1, 3); // полный бред + не работает =(
ShowList(Y);

Ответы (1 шт):

Автор решения: Andrej Levkovitch

Если коротко, то это должно выглядеть как-то так:

auto insertIter = secondList.begin();
std::advance(insertIter, 5);
auto lastCopyIter = firstList.begin();
std::advance(lastCopyIter, 3);
secondList.splice(insertIter, firstList, firstList.begin(), lastCopyIter);

PS код не компилоровал, так что могут быть помарки

→ Ссылка