了解 Vector 的 Push_back 复制行为
在使用向量时,开发人员经常会遇到有关 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 操作期间触发复制构造函数两次。但是,执行后,我们观察到以下输出:
Inside default Inside copy with my_int = 0 Inside copy with my_int = 0 Inside copy with my_int = 1
为什么复制构造函数似乎被调用了三次?
因此,复制构造函数总共被调用了 3 次。要优化此行为:
以上是在 C 向量中的“push_back”操作期间,复制构造函数被调用多少次?的详细内容。更多信息请关注PHP中文网其他相关文章!