std::vector<CustomClass *> whatever(20000);
или:
std::vector<CustomClass *> whatever;
whatever.reserve(20000);
Первый устанавливает фактический размер массива, т. Е. Делает его вектором из 20000 указателей. Последний оставляет вектор пустым, но резервирует место для 20000 указателей, поэтому вы можете вставить (до) такого количества без необходимости перераспределения.
По крайней мере, по моему опыту, это довольно необычно, чтобы любой из них имел огромное значение в производительности, но при некоторых обстоятельствах любой из них может повлиять на правильность. В частности, до тех пор, пока не происходит перераспределение, итераторы в векторе гарантированно остаются действительными, и после того, как вы установили размер / зарезервированное пространство, вам гарантировано, что перераспределения не будет, пока вы не t увеличить размер сверх этого.
std::vector
ссылке есть конструктор и две функции , в зависимости от того, что лучше соответствует вашим потребностям.