There is anothers disavantages of lists which may be important when working withs small objects:
-these are doubly linked lists so there is an extra two pointers used for every elemnts so for a list<T> of n elements will use approximately (sizeof(T) + 2 * sizeof(void*)) * n = n*sizeof(T) + 2 * n * sizeof(void*). This is negligable for big types but can be an issue for very small types like int. For vector<T> the reserved memory, if not specified with reserve() could vary upon implementations but it is usualy less than 2*n*sizeof(T).
-For a list each time an element have to be added a node must be allocated which implies a call to malloc(unless you use your own allocator) and malloc have a non-negligable cost. The same for free() when an element is removed. With a vector there is no allocations if the reserved memory is big enough(but the cost of a reallocation if not can be very bad)