Maison > Article > développement back-end > Combien de fois le constructeur de copie est-il appelé lors des opérations « push_back » dans un vecteur C ?
Comprendre le comportement de copie Push_back de Vector
Lorsqu'ils travaillent avec des vecteurs, les développeurs rencontrent souvent des requêtes concernant la fréquence des invocations du constructeur de copie lors des opérations push_back. Examinons ce comportement avec un exemple :
Considérons le code C suivant :
<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>
Cet extrait déclenche normalement le constructeur de copie deux fois pendant les opérations push_back. Cependant, lors de l'exécution, nous observons le résultat suivant :
Inside default Inside copy with my_int = 0 Inside copy with my_int = 0 Inside copy with my_int = 1
Pourquoi le constructeur de copie semble-t-il être invoqué trois fois ?
Par conséquent, au total, le constructeur de copie est invoqué trois fois. Pour optimiser ce comportement :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!