push_back和emplace_back
2023-04-19 22:02:29 4 举报
AI智能生成
近期关于push_back和emplace_back的区别的研究
作者其他创作
大纲/内容
无区别场景
不进入构造函数
基本类型0初始化
禁止隐式类型转换
参数列表失效
传入参数为左值
都调用拷贝构造函数
编译器对单右值传入进行优化
部分编译器对于单个右值返回,pushback会使用右值引用接住后再次使用move转为右值并调用emplaceback
有区别场景
编译器不进行优化或传入参数列表
push_back
首先在外面调用构造函数产生一个临时右值
使用右值引用参数接住右值,随后调用construct方法
construct方法遇见左值参数,会调用拷贝构造函数,启用深拷贝将目标拷贝到vector尾部
emplace_back
使用可变参数列表接住参数
随后使用forward方法对参数进行完美转发
construct遇见参数列表,调用构造函数,分辨参数类型,直接在vec尾部进行构造
0 条评论
下一页