Not necessarily. std::vector is in most cases considerably more efficient than std::list. It also uses far less memory, especially when elements are so tiny (sizeof(std::unique_ptr) is 4-8 bytes).
In std::vector containers, algorithms like std::remove_if() can remove elements in a relatively efficient way, and the swap()-and-pop_back()-idiom even allows to remove a middle element in constant time, as long as the element order can be changed.
I have used std::list mainly when indirections (pointers, references, iterators) to elements must remain valid. std::deque for queue-like structures where elements are often inserted and removed at both ends, or if I want containers to grow without invalidating existing pointers. Otherwise always std::vector for sequential containers, it should be the default choice.