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 条评论
 下一页