Чтобы создать вектор и одновременно указать его емкость, создайте вектор с требуемой емкостью, скопируйте в него нужные вам элементы и удалите из итератора, возвращенного функцией copy.Если конструктор медленный, просто напишите другой конструктор со специальными параметрами, которые просто резервируют память.
int main (int argc, char** argv) {
std::vector<size_t> v (10, 0);
size_t tmp [3] = {0, 1, 2};
std::vector<size_t>::iterator i (v.begin ());
i = std::copy ((const size_t*)tmp, (const size_t*) &tmp [3], v.begin ());
v.erase (i, v.end ());
std::cout << "\tv capacity == " << v.capacity () << std::endl;
}
выведет:
v емкость == 10