Я ищу способ инициализации вектора с минимальным количеством копий.
struct T {
std::vector<int> v;
//some stuff here ; pod
T(std::vector<int> vv):v(vv){}://a non default constructor
};
Теперь, чтобы инициализировать вектор, я делаю
std::vector<T> vec(n);
for (auto it = vec.begin() ;it != vec.end(),++it)
{
// do some stuff to *it;
}
"сделать кое-что здесь" в основном просто переделать то, что сделано в конструкторе, и поэтому у меня есть две инициализации T.v ...
Я тоже думал сделать
std::vector<T> vec;
for (int i = 0 ; i< n;++i)
{
std::vector<int> vv = // blabla
T t(vv);
vec.push_back(t);
}
, что снова приводит к копированию vv ...
Так как же я инициализирую вектор структуры, где каждый элемент инициализируется с помощью конструктора не по умолчанию (вызов с другим аргументом для каждого элемента)?