Vorrei creare un vettore di un tipo complesso, leggendo i singoli elementi di uno stream. Conosco le dimensioni del vettore in anticipo. È meglio specificare il numero di elementi nel costruttore vettoriale o usando il metodo di riserva? Quale di queste due è meglio?Compilazione di un vettore con un numero noto di elementi: specificare le sue dimensioni nel costruttore o utilizzando il metodo di riserva?
int myElementCount = stream.ReadInt();
vector<MyElement> myVector(myElementCount);
for (int i = 0; i < myElementCount; i++)
{
myVector[i] = stream.ReadMyElement();
}
o
int myElementCount = stream.ReadInt();
vector<MyElement> myVector;
myVector.reserve(myElementCount);
for (int i = 0; i < myElementCount; i++)
{
myVector.push_back(stream.ReadMyElement());
}
cosa circa il caso in cui ho appena creare un vettore di int o qualche altro tipo semplice.
Utilizzare 'resize()' invece di 'reserve()', è una confusione comune per i newb. –
@ πάνταῥεῖ Perché? Non 'ridimensiona' anche il default costruisce gli oggetti? OP sta facendo il 'push_back' in ogni caso. Forse sono confuso anche io :) – vsoftco