In C++ 11, std :: vector ha il costruttore vector(size_type n)
che realizzerà automaticamente gli elementi n
, che possono essere utilizzati con classi costruibili, mobili e non copiabili predefinite.Perché non esiste un vettore (size_type n, const Allocator & alloc) in C++ 11?
Tuttavia, a differenza di ogni altro costruttore di vettore, non v'è alcuna variante che prende un allocatore, e mi hanno fatto ricorso alle seguenti:
// 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();
C'è un modo migliore per ottenere questo risultato? C'è un motivo specifico per cui lo standard vector(size_type n, const Allocator& alloc)
è stato omesso?
Sembra un difetto nelle specifiche. Presenta un rapporto su di esso, se non lo sei già. –
@NicolBolas esiste un documento che descrive il processo per la presentazione di un rapporto? – rkjnsn
Non importa. Vedi il mio post. –