std::vector frage!
-
Hi,
nehmen wir mal an ich hab die klasse/struktur (is ja auch egal) Foo!
So davon will ich ca. 500 in einen vector stopfen, soll ich die mit new initialisieren und reinpumpen oder direkt rein da?
-
Hallo,
wenn du sie nicht polymorph verwenden willst, direkt.
-
1.) Du solltest jedes Objekt initialisieren das du sirgenwann mal verwenden willst.
2.) Wenn du im Vektor Objekte und keine Zeiger auf Objekte ablegen willst, werden sowieso Kopien von deinen Ausgangsobjekten angelegt. Woher die Ausgangsobjekte kommen ist daher im Prinzip egal. Generell sollte man jedoch Objekte auf dem Stack bevorzugen, sofern möglich.
-
Hallo,
1.) Du solltest jedes Objekt initialisieren das du sirgenwann mal verwenden willst.
Ja, nur die Frage ist eben, ob mit new oder nicht.
Wenn du die Objekte 500 mal mit new initialisierst, dann muss du auch 500 mal delete aufrufen, sonst gibts ein Speicherleck.
-
Wobei das mit dem manuellen delete-n in den STL-Containern auch so eine Sache ist, richtig zuverlässig geht das nur mit z.B. boost::shared_ptr. Da kommt dann nochmal mehr Overhead dazu.
Also lieber vec.reserve(anzahl) aufrufen (wenn die Anzahl vorher schon feststeht) und direkt rein push_back()en.