Normalmente chiamo reserve
su un std::vector
subito dopo la sua costruzione. Ciò non dovrebbe in genere causare la distruzione dell'archiviazione esistente dello std::vector
e sostituirla con una nuova? C'è un modo per riservare la memoria in fase di costruzione piuttosto che allocare lo spazio heap e quindi distruggerlo immediatamente? Oppure esiste un trucco di implementazione all'interno dello std::vector
per garantire che questo non sia un problema?Come riservo la memoria per un vettore std :: al momento della costruzione?
I costruttori disponibili sembrano essere in grado di essere utili per riempire i valori con std::vector
anziché riservare spazio esplicitamente.
Perché pensi che non v'è alcun stanziamento mucchio esistente su un vettore fresco? –
cosa c'è di sbagliato nel chiamare 'reserve()' nel corpo del costruttore? sembra che tu stia cercando di fare un'ottimizzazione micro –
Penso che 'std :: vector v; std :: cout << v.capacity(); 'è garantito per stampare' 0', almeno [gcc lo fa] (http://coliru.stacked-crooked.com/a/9ae2c73e77f0d5af), il che significa che c'è nessuna allocazione dell'heap per il costruttore * default *. –
Nawaz