Можно ли создать std :: vector с начальным размером и создать его элементы на месте?Мой сохраненный тип не может быть скопирован, поэтому это не работает, потому что начальное значение создается как временное и копируется в элементы:
#include <iostream>
#include <memory>
#include <vector>
struct A
{
A(int i = 0) : i_ (i) {};
int i_;
std::unique_ptr<int> p_; // not copyable
};
int main()
{
std::vector<A> v (10, 1); // error
}
Это близко к тому, что я пытаюсь достичь, и, возможно, этоне так уж и плохо, но мне интересно, есть ли более чистый способ:
int main()
{
//std::vector<A> v (10, 1); // error
std::vector<A> v;
v.reserve (10);
for (int i = 0; i < 10; ++i) {
v.emplace_back (1);
}
}
Я ограничен C ++ 11, но я также заинтересован в решениях C + + 17любопытства.