Используйте метод списка splice ()
void list::splice ( iterator position, list<T,Allocator>& x, iterator i );
Переместить итератор i из списка x в текущий список на позицию "position"
Таким образом, чтобы переместить его вконечный результат
x.splice( x.end(), x, iter );
(оба могут быть одним и тем же списком или разными списками, если список, из которого перемещен элемент, имеет одинаковый тип, как T, так и Allocator)