С точки зрения производительности необходимо инициализировать вектор с использованием 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
).
вышеупомянутый код старается не инициализировать векторное содержание прежде, чем заполнить его данными, которые Вы действительно хотите. Производительность этого решения хорошо видима на больших наборах данных.