- 这样会使用复制构造函数6次;push_back()是往后推,会复制一份
struct Vectex{
float x,y,z;
Vectex(float x,float y,float z)
:x(x),y(y),z(z)
{}
Vectex(const Vectex& Vectex)
:x(Vectex.x),y(Vectex.y),z(Vectex.z)
{
std::cout<<"Copied!"<<std::endl;
}
};
int main(){
std::vector<Vectex>Vectexies;
Vectexies.push_back(Vectex(1,2,3));
Vectexies.push_back(Vectex(4,5,6));
}
- 使用emplace_back()是在原地开始推,调用复制函数3次
struct Vectex{
float x,y,z;
Vectex(float x,float y,float z)
:x(x),y(y),z(z)
{}
Vectex(const Vectex& Vectex)
:x(Vectex.x),y(Vectex.y),z(Vectex.z)
{
std::cout<<"Copied!"<<std::endl;
}
};
int main(){
std::vector<Vectex>Vectexies;
Vectexies.emplace_back(Vectex(1,2,3));
Vectexies.emplace_back(Vectex(4,5,6));
}