Kopiert std::vector Objekte mit push_back()?
Nach ausführlicher Analyse mit Valgrind kam man zu dem Schluss, dass std::vector Führt eine Kopie der mit push_back() eingefügten Objekte durch.
Interner Mechanismus
Im Gegensatz zum Vektor in C, der nur mit Referenzen arbeitet, speichert std::vector in C tatsächliche Objekte. Dies bedeutet, dass bei jedem Aufruf von push_back() eine Kopie des eingefügten Objekts erstellt und dem internen Array des Vektors hinzugefügt wird.
Speicherung von Zeigern
Wenn Sie beabsichtigen, Zeiger innerhalb des Vektors zu speichern, sollten Sie die Verwendung von std::vector
Intelligente Zeiger
Intelligente Zeiger erleichtern dies die Verwaltung der Objektlebensdauer, wodurch sichergestellt wird, dass die enthaltenen Objekte gültig bleiben, während sie vom Vektor referenziert werden. Sie nutzen das Resource Acquisition Is Initialization (RAII)-Idiom, um Ressourcen automatisch zu erwerben und freizugeben.
Zusammenfassend erstellt std::vector::push_back() eine Kopie des eingefügten Objekts, verwendet jedoch intelligente Zeiger mit std ::vector
Das obige ist der detaillierte Inhalt vonErstellt „std::vector::push_back()' Kopien von Objekten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!