Heim  >  Artikel  >  Backend-Entwicklung  >  Kopiert std::vector Objekte bei Push_back()?

Kopiert std::vector Objekte bei Push_back()?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 04:44:01412Durchsuche

Does std::vector Copy Objects on Push_back()?

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 in Betracht ziehen. oder 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn