Я пишу внутренний цикл, который должен размещать struct
в непрерывном хранилище. Я не знаю, сколько из этих 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];
}
}