Well, given a vector<T> named v, you might write:
and thus populate the vector with those 20 objects. If they are all (initially) the same as you create the vector, you could just write:
As for your users creating objects: when your user performs some action to add a book to the library, your program then correspondingly uses push_back on the vector. The user himself/herself should be thinking "adding a book to the library", not "adding a book object to a vector".
vector<T> v(20, T(whatever, args));