Я так понял, "безразмерный" означает вектор бесконечного размера, то есть можно работать с элементами по любому индексу. Если производительность не критична, то здесь удобнее всего будет работать с std::map:
std::map<int, bottle> vBottle;
int k = 42;
vBottle[k].SetVector(5);
При первом обращении к новому элементу, он создастся через конструктор
bottle()
и будет сразу готов к использованию.