Создание пула объектов

Я хотел бы создать объект bool, используя вектор объектов типа X. Когда я создаю вектор:

vector<X>* v = new vector<X>;
v.reserve(10000);

Я хочу сделать минимальную работу, насколько это возможно. Будет ли вызван только конструктор по умолчанию (мой конструктор по умолчанию пуст для X)?

Позже в моей программе как «создать» мой объект, используя пул объектов? Будет ли это что-то вроде:

int y = get_next_object_in_pool();
X x = v[y];

где get_next_object_in_pool() просто держит индекс до следующего свободного индекса в векторе?

0

Решение

Никакой конструктор для X не будет вызван, так как резерв не создает никаких объектов. Не путайте резерв с изменением размера, они делают разные вещи. Я думаю, что из остальной части вашего описания вы хотите зарезервировать, но помните, что он оставляет ваш вектор в размере 0.

Когда вы хотите добавить объект в пул, это что-то вроде

v.push_back(X());

при условии, что вы хотите добавить построенный объект по умолчанию.

Если вы хотите получить полный контроль над вашим пулом, с любым старым сочетанием созданных и не построенных слотов в вашем пуле. тогда тебе придется заняться чем-то другим. Вы не получите это с vector<T>,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]