С учетом
my_type m;
std::vector<my_type> v;
Что работает быстрее?
m.generate_data_inside_self();
v.push_back(m);
Или
v.push_back(m);
v[0].generate_data_inside_self();
Если бы вектор содержал указатели на my_types, тогда оба выглядели бы примерно одинаково.
Однако при копировании всего объекта my_type, как в этом примере, я думаю, что 2-й будет быстрее, так как копировать меньше, поскольку дополнительные данные появляются только после того, как "m" находится внутри "v".
редактирование:
В примере моей программы my_type выглядит примерно так.
my_type
{
private:
std::vector<unsigned short> data; //empty after construction
public:
//no destructors, assignment operators
//copy constructors etc... explicitly (are) defined
generate_data_inside_self() //populates data
{
//contains for example a loop that populates
//"data" with some (lets say 50) values
}
}