void splice(iterator it, list& x);
void splice(iterator it, list& x, iterator first);
void splice(iterator it, list& x, iterator first, iterator last);
The first member function inserts the sequence controlled by x before the element in the controlled sequence pointed to
by it. It also removes all elements from x. (&x must not equal this.)
The second member function removes the element pointed to by first in the sequence controlled by x and inserts it
before the element in the controlled sequence pointed to by it. (If it == first || it == ++first, no change
occurs.)
The third member function inserts the subrange designated by [first, last) from the sequence controlled by x
before the element in the controlled sequence pointed to by it. It also removes the original subrange from the sequence
controlled by x. (If &x == this, the range [first, last) must not include the element pointed to by it.)
If the third member function inserts N elements, and &x != this, an object of class iterator is incremented N times.
For all splice member functions, if allocator != str.allocator, a copy and a destructor call also occur for
each inserted element.