После прочтения большинства комментариев я все еще не уверен на 100%, что вы хотите. Если вы ищете список объектов, где каждый объект может присутствовать или нет, вы можете использовать массивы указателей, но это немного страшно в современном C ++. Альтернативой может быть вектор std::optional
// create vector with 2 empty elements
std::vector<std::optional<A>> a(2);
// if a[0] is empty create one
if(!a[0])
a[0] = A();
//or set to null
a[0] = std::nullopt;
Каждый элемент может иметь значение или нет, и вам не нужно возиться с указателями. Альтернативой может быть вектор std::uniqe_ptr
// create vector with 2 empty elements
std::vector<std::unique_ptr<A>> a(2);
// if a[0] is empty create one
if(!a[0])
a[0].reset(new A());
// or set it to null
a[0] = nullptr;
Оба варианта позволят вам проверить, присутствует элемент или нет, и что наиболее важно, оба варианта позаботятся об очистке. до созданных объектов. Какой вариант лучше для данного случая, зависит от читателя.