62
задан 17 July 2013 в 12:20

1 ответ

С точки зрения производительности необходимо инициализировать вектор с использованием reserve() объединенный с push_back() функции как в примере ниже:

const int numberOfElements = 10;

std::vector<int> data;
data.reserve(numberOfElements);

for(int i = 0; i < numberOfElements; i++)
    data.push_back(i);

Весь std::fill, std::generate, и т.д. воздействуют на диапазон существующего векторного содержания, и, поэтому вектор должен быть заполнен некоторыми данными ранее. Даже выполнение следующего: std::vector<int> data(10); создает вектор со всем набором элементов к его значению по умолчанию (т.е. 0 в случае int).

вышеупомянутый код старается не инициализировать векторное содержание прежде, чем заполнить его данными, которые Вы действительно хотите. Производительность этого решения хорошо видима на больших наборах данных.

1
ответ дан 31 October 2019 в 13:25

Другие вопросы по тегам:

Похожие вопросы: