vector的push_back()、emplace_back等改变空间大小的操作,调用构造函数、析构函数的次数分析!!!
先看这个初始代码:
#include <iostream>
#include <vector>
using std::cout; using std::endl;
struct X{
X() {cout << "调用构造函数:X()" << endl;}
X(const X&) {cout << "调用拷贝构造函数:X(const X&)" << endl;}
~X(){cout << "调用析构函数:~X()" << endl;}
};
int main(int argc, char **argv)
{
cout << "定义局部变量:" << endl;
X x;
cout << endl;
std::vector<X> vec;
cout << "存放在容器:" << endl;
vec.push_back(x);
cout << endl;
cout << "程序结束!!!" << endl;
return 0;
}

输出如上,vector上进行一次push_back()操作时,调用了一次拷贝构造函数(如果使用emplace_back(),则会调用构造函数而不是拷贝构造函数),程序结束时调用两次析构函数,分别对应变量xx


1269

被折叠的 条评论
为什么被折叠?



