首页 > 后端开发 > C++ > `push_back` 与 `emplace_back`:什么时候应该使用哪个?

`push_back` 与 `emplace_back`:什么时候应该使用哪个?

Susan Sarandon
发布: 2024-12-29 17:22:10
原创
198 人浏览过

`push_back` vs. `emplace_back`: When Should You Use Which?

push_back 与 emplace_back

在理解 push_back 和 emplace_back 之间的差异时,掌握 Push_back 的各种重载之间的区别至关重要。

push_back重载

push_back 提供了三种重载,处理不同的数据类型和引用:

  • push_back(const Type& _Val):接收所提供数据类型的副本。
  • push_back(Type& _Val):处理对实际数据的引用type.
  • push_back(Type&& _Val):接受对数据类型的右值引用。

emplace_back MSVC10 中的重载

在 Microsoft Visual C 10 (MSVC10),emplace_back 有一个附加的重载:

  • emplace_back(Type&&& _Val):与push_back(Type&& _Val)重载相比,此重载本质上是多余的,没有独特的功能。

C 0x 的 emplace_back 重载

正版emplace_back 的 C 0x 定义显着不同:

  • emplace_back(Args&&&...):此重载使容器能够使用可变参数列表直接在其自身内部构造对象。

C 中 emplace_back 的优点0x

emplace_back 的 C 0x 版本有几个优点:

  • 直接对象构造:它直接在容器内构造一个对象,而不需要创建一个对象。首先是临时对象。
  • 更快的性能:此方法绕过潜在的副本和移动,这在push_back可能引入不必要的副本或移动的复杂场景中特别有用。

结论

在C中,emplace_back是一个强大的功能除了 Push_back 函数之外,该函数还可以使用参数的可变参数列表直接构造容器内的对象。虽然 MSVC10 提供了 emplace_back 的非一致性实现,但真正的 C 0x 实现提供了显着的性能优势,并允许更有效地在容器内构建对象。

以上是`push_back` 与 `emplace_back`:什么时候应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板