Kopiert std::vector Objekte bei push_back()?
Nach Untersuchungen mit Valgrind kam ein Benutzer zu dem Schluss, dass std::vector erstellt Kopien von Objekten beim Ausführen von push_back(). Dies wirft die Frage auf:
Std::vector kann keine Referenzen oder Zeiger speichern, ohne sie zu kopieren?
Leider ist die Antwort positiv. std::vector::push_back() erstellt wie vorgesehen eine Kopie des als Argument übergebenen Objekts und speichert es im Vektor.
Alternativen zur Vermeidung von Kopiervorgängen:
Wenn das gewünschte Verhalten darin besteht, Zeiger oder Referenzen anstelle von Kopien zu speichern, sollten Sie die Verwendung eines std::vector
Achtung:
Stellen Sie bei der Verwendung von Zeigern oder Referenzen sicher, dass die referenzierten Objekte durchgehend gültig bleiben die Lebensdauer des Vektors. Der Einsatz intelligenter Zeiger, die Resource Acquisition Is Initialization (RAII) nutzen, kann dieses Problem effektiv lösen.
Das obige ist der detaillierte Inhalt vonKopiert std::vector Objekte bei Push_back()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!