全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++ 中"emplace_back" 与 "push_back" 的区别

 C++ 中"emplace_back" 与 "push_back" 的区别

emplace_backpush_back都是向容器内添加数据.

对于在容器中添加类的对象时, 相比于push_back,emplace_back可以避免额外类的复制和移动操作.

"emplace_back avoids the extra copy or move operation required when using push_back."

参见: http://en.cppreference.com/w/cpp/container/vector/emplace_back

注意下面代码中的emplace_back和push_back的添加方式(VS2012下编译通过):

#include <vector> 
#include <string> 
#include <iostream> 
 
struct President 
{ 
  std::string name; 
  std::string country; 
  int year; 
 
  President(std::string p_name, std::string p_country, int p_year) 
    : name(std::move(p_name)), country(std::move(p_country)), year(p_year) 
  { 
    std::cout << "I am being constructed.\n"; 
  } 
  President(President&& other) 
    : name(std::move(other.name)), country(std::move(other.country)), year(other.year) 
  { 
    std::cout << "I am being moved.\n"; 
  } 
  President& operator=(const President& other); 
}; 
 
int main() 
{ 
  std::vector<President> elections; 
  std::cout << "emplace_back:\n"; 
  elections.emplace_back("Nelson Mandela", "South Africa", 1994); //没有类的创建 
 
  std::vector<President> reElections; 
  std::cout << "\npush_back:\n"; 
  reElections.push_back(President("Franklin Delano Roosevelt", "the USA", 1936)); 
 
  std::cout << "\nContents:\n"; 
  for (President const& president: elections) { 
    std::cout << president.name << " was elected president of " 
      << president.country << " in " << president.year << ".\n"; 
  } 
  for (President const& president: reElections) { 
    std::cout << president.name << " was re-elected president of " 
      << president.country << " in " << president.year << ".\n"; 
  } 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# C++  # 中"emplace_back"  #   # "push_back"  # 的区别  # emplace_back  # push_back的区别  # 关于C++中push_back()函数的用法及代码实例  # C++ push_back()函数使用详解  # C++ push方法与push_back方法的使用与区别  # C++实现栈的操作(push和pop)  # C++ push方法与push_back方法常见方法介绍  # 都是  # 希望能  # 谢谢大家  # 容器内  # vector  # cpp  # cppreference  # en  # container  # http  # gt  # lt  # iostream  # string  # class  # pre  # include  # brush  # span  # style 


相关文章: 长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何安全更换建站之星模板并保留数据?  如何通过PHP快速构建高效问答网站功能?  详解jQuery停止动画——stop()方法的使用  建站之星安装失败:服务器环境不兼容?  建站之星后台密码遗忘?如何快速找回?  ,如何利用word制作宣传手册?  长沙企业网站制作哪家好,长沙水业集团官方网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  重庆网站制作公司哪家好,重庆中考招生办官方网站?  山东网站制作公司有哪些,山东大源集团官网?  如何用VPS主机快速搭建个人网站?  如何制作一个表白网站视频,关于勇敢表白的小标题?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  香港服务器WordPress建站指南:SEO优化与高效部署策略  Python路径拼接规范_跨平台处理说明【指导】  简单实现Android验证码  怀化网站制作公司,怀化新生儿上户网上办理流程?  建站主机是否属于云主机类型?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  制作网站公司那家好,网络公司是做什么的?  如何正确选择百度移动适配建站域名?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  javascript中对象的定义、使用以及对象和原型链操作小结  h5网站制作工具有哪些,h5页面制作工具有哪些?  css网站制作参考文献有哪些,易聊怎么注册?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  长沙做网站要多少钱,长沙国安网络怎么样?  如何彻底删除建站之星生成的Banner?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  建站之星如何实现五合一智能建站与营销推广?  如何快速搭建个人网站并优化SEO?  再谈Python中的字符串与字符编码(推荐)  微信小程序 input输入框控件详解及实例(多种示例)  已有域名建站全流程解析:网站搭建步骤与建站工具选择  高端智能建站公司优选:品牌定制与SEO优化一站式服务  高性能网站服务器配置指南:安全稳定与高效建站核心方案  内网网站制作软件,内网的网站如何发布到外网?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何快速重置建站主机并恢复默认配置?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  建站为何优先选择香港服务器?  如何通过云梦建站系统实现SEO快速优化?  全景视频制作网站有哪些,全景图怎么做成网页? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。