#include <iostream>
#include <vector>
using namespace std;
class base
{
int x;
public:
base(int k){x =k; }
void display()
{
cout<<x<<endl;
}
base(const base&)
{
cout<<"base copy constructor:"<<endl;
}
};
int main()
{
vector<base> v;
base obase[5]={4,14,19,24,29};
for(int i=0; i<5; i++)
{
v.push_back(obase[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
将数据插入向量时,使用复制构造函数将复制到该数据转到向量.
当我运行这个程序时,
请任何人告诉我为什么会这样?对于每次插入,复制构造函数不应只调用一次吗?
调用根据需要push_back()增加向量的大小,这涉及复制向量的内容.既然你已经知道它将包含五个元素,或者v.reserve(5);在循环之前,或者使用范围构造函数:
base obase[5]={4,14,19,24,29};
vector<base> v(obase, obase+5);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
446 次 |
| 最近记录: |