Chciałbym stworzyć wektor jakiegoś złożonego typu, czytając poszczególne elementy ze strumienia. Znam rozmiar wektora z góry. Czy lepiej jest określić liczbę elementów w konstruktorze wektorowym lub przy użyciu metody rezerwy? Który z tych dwóch jest lepszy?Zapełnianie wektora znaną liczbą elementów: określić jego rozmiar w konstruktorze lub przy użyciu metody rezerwy?
int myElementCount = stream.ReadInt();
vector<MyElement> myVector(myElementCount);
for (int i = 0; i < myElementCount; i++)
{
myVector[i] = stream.ReadMyElement();
}
lub
int myElementCount = stream.ReadInt();
vector<MyElement> myVector;
myVector.reserve(myElementCount);
for (int i = 0; i < myElementCount; i++)
{
myVector.push_back(stream.ReadMyElement());
}
Co o przypadku, gdy po prostu utworzyć wektor wskazówki lub jakiś inny typ prosty.
Użyj 'resize()' zamiast 'reserve()', jest to powszechne zamieszanie dla początkujących. –
@ πάνταῥεῖ Dlaczego? Czy "resize" również domyślnie nie tworzy obiektów? OP i tak robi 'push_back'. Może też jestem zdezorientowany :) – vsoftco