Vector の Push_back コピー動作を理解する
Vector を操作する際、開発者は、push_back 操作中のコピー コンストラクターの呼び出し頻度に関するクエリに遭遇することがよくあります。例を使ってこの動作を詳しく見てみましょう。
次の C コードを考えてみましょう。
<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>
このスニペットは、push_back 操作中にコピー コンストラクターを 2 回トリガーすると予想されます。ただし、実行すると、次の出力が観察されます:
Inside default Inside copy with my_int = 0 Inside copy with my_int = 0 Inside copy with my_int = 1
コピー コンストラクターが 3 回呼び出されているように見えるのはなぜですか?
したがって、コピー コンストラクターは合計 3 回呼び出されます。この動作を最適化するには:
以上がC ベクトルでの「push_back」操作中にコピー コンストラクターが何回呼び出されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。