You do not need a default constructor to have an instance vector.
The only limitation is that you cannot use vector :: resize with the default argument when the class does not have a default constructor.
vec.resize(20); // requires default constructor
but you can specify a vector :: resize object by default:
std::vector<foo> vec;
vec.resize(20, foo(10));