Verstehen des Push_back-Kopierverhaltens von Vector
Bei der Arbeit mit Vektoren stoßen Entwickler häufig auf Fragen bezüglich der Häufigkeit von Aufrufen des Kopierkonstruktors während push_back-Vorgängen. Sehen wir uns dieses Verhalten anhand eines Beispiels genauer an:
Betrachten Sie den folgenden C-Code:
<code class="cpp">class Myint { int my_int; public: Myint() : my_int(0) { cout << "Inside default" << endl; } Myint(const Myint& x) : my_int(x.my_int) { cout << "Inside copy with my_int = " << x.my_int << endl; } }; int main() { vector<Myint> myints; Myint x; myints.push_back(x); x.set(1); myints.push_back(x); }</code>
Dieses Snippet löst den Kopierkonstruktor erwartungsgemäß zweimal während der push_back-Vorgänge aus. Bei der Ausführung beobachten wir jedoch die folgende Ausgabe:
Inside default Inside copy with my_int = 0 Inside copy with my_int = 0 Inside copy with my_int = 1
Warum scheint der Kopierkonstruktor dreimal aufgerufen zu werden?
Daher wird der Kopierkonstruktor insgesamt dreimal aufgerufen. Um dieses Verhalten zu optimieren:
Das obige ist der detaillierte Inhalt vonWie oft wird der Kopierkonstruktor während „push_back'-Operationen in einem C-Vektor aufgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!