Я пишу внутренний цикл, который должен поместить struct
s в непрерывное хранилище. Я не знаю, сколько из этих struct
будет раньше времени. Моя проблема в том, что STL vector
инициализирует его значения 0, поэтому независимо от того, что я делаю, я несу расходы на инициализацию плюс стоимость установки элементов struct
в их значения.
Есть ли какой-нибудь способ предотвратить инициализацию или существует STL-подобный контейнер с непрерывным изменяемым размером хранилища и неинициализированными элементами?
(я уверен, что эту часть кода нужно оптимизировать, и я уверен, что инициализация требует значительных затрат.)
Также, смотрите мои комментарии ниже для разъяснения о том, когда происходит инициализация.
НЕКОТОРЫЙ КОД:
void GetsCalledALot(int* data1, int* data2, int count) {
int mvSize = memberVector.size()
memberVector.resize(mvSize + count); // causes 0-initialization
for (int i = 0; i < count; ++i) {
memberVector[mvSize + i].d1 = data1[i];
memberVector[mvSize + i].d2 = data2[i];
}
}