Почему в C ++ 11 нет вектора (size_type n, const Allocator & alloc)?

В C ++ 11 std :: vector имеет конструктор vector (size_type n) , который по умолчанию создает n элементов на месте, которые можно использовать с конструктивными элементами по умолчанию, подвижные, не копируемые классы.

Однако, в отличие от любого другого конструктора векторов, не существует варианта, который принимает распределитель, и я прибег к следующему:

// Foo is default constructible and moveable, but not copyable
const int n = 10; // Want 10 default constructed Foos
std::vector<Foo, CustomAllocator> foos(allocator);
foos.reserve(n);
for (int i = 0; i < n; ++i)
   foos.emplace_back();

Есть ли лучший способ сделать это? Есть ли конкретная причина, по которой vector (size_type n, const Allocator & alloc) был исключен из стандарта?

6
задан rkjnsn 23 February 2012 в 22:24
поделиться