A vector has all it's elements stored sequentially in memory, like an array, so re-arranging them requires a lot of copies. A list has pointers to the next element in the list, so re-arranging those elements just requires a pointer assignment, which is much faster.
ok, I had a brief notion in which I thought it was due to pointers that this type of operation would be faster. thanks for giving me a more detailed explanation.