list — doubly linked list. vector — dynamic array.
std::list:
1std::list<int> l = {1, 2, 3};2l.push_back(4);3l.insert(l.begin(), 0); // O(1)4// l[2]; // Error! No operator[]
std::vector:
1std::vector<int> v = {1, 2, 3};2v.push_back(4);3v[2] = 10; // O(1) random access
When to use: