Container requirements have changed from C++03 to C++11. While C++03 had blanket requirements (e.g. copy constructibility and assignability for vector), C++11 defines fine-g
Complementing the other answers, another approach is to use:
vector> vec;
If it is the case where you want to enforce that only vec has ownership of its items. Or if you want a dynamic of moving items into vec and at some point move them out.
As pointed out, pointer const semantics may be confusing, but shared_ptr and unique_ptr aren't. const unique_ptr is a const pointer and unique_ptr is a const pointee as you would expect.