news 2026/3/26 9:47:06

现代C++特性深度探索:模板扩展、类增强、STL更新与Lambda表达式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
现代C++特性深度探索:模板扩展、类增强、STL更新与Lambda表达式
可变参数模版
4.4 emplace系列接口

通过前面的学习,我们知道emplace_back和push_back的区别其实不是很大,真正的区别就是:

  • emplace_bakc是一个可变参数模版,而push_back只是一个普通的函数

emplace_back可以传参数包进行构造,而push_back不能传参数包,要么是传插入的对象,或者是进行隐式类型转换

ok,当我们了解了这些,我们就来实现一个emplace_back:

4.5 emplace和emplace_back在list中的模拟实现

代码语言:javascript

AI代码解释

template<class ...Args> void emplace_back(Args... args) { emplace(end(), forward<Args>(args)...); } template<class ...Args> iterator emplace(iterator pos,Args&&... args) { Node* cur = pos._node; Node* newnode = new Node(forward<Args>(args)...); Node* prev = cur->_prev; // prev newnode cur prev->_next = newnode; newnode->_prev = prev; newnode->_next = cur; cur->_prev = newnode; return iterator(newnode); }

ok,当我们实现了emplace_back和emplace接口后,我们就要实现相应的可变模板参数版本的构造节点的代码:

代码语言:javascript

AI代码解释

template <class... Args> ListNode(Args&&... args) : _next(nullptr) , _prev(nullptr) , _data(std::forward<Args>(args)...) {}

ok,这样改完之后,我们就可以使用emplace_back进行尾插操作。

但是,当我们加上emplace_back后,push_back就不能使用万能引用版本的尾插,为什么?

  1. 库中并没有把push_back写成泛型化,因为有了emplace_back就没有必要将push_back写成泛型化
  2. 要兼容以前的代码,我们只能写一个左值版本和一个右值版本的push_back代码

总结:有了emplace_back,就不需要这个万能引用版的push_back,直接使用左值版本和右值版本的push_back

emplace_back总体而言是更高效,推荐以后使用emplace系列替代insert和push系列

  • 除此之外:emplace_back和push_back的用法是不能混着的~

五、C++11中类的新功能
5.1 默认的移动构造和移动赋值

原来的C++类中,有6个默认成员函数:构造、析构、拷贝构造、赋值重载、取地址重载、const取地址重载,最重要的是前4个,后2个用处不大

www.dongchedi.com/article/7591991060143276568
www.dongchedi.com/article/7591993025765736985
www.dongchedi.com/article/7591992867145810456
www.dongchedi.com/article/7591993008090923545
www.dongchedi.com/article/7591990378707370521
www.dongchedi.com/article/7591991513040093720
www.dongchedi.com/article/7591991177697100313
www.dongchedi.com/article/7591990171571159577
www.dongchedi.com/article/7591986152891384345
www.dongchedi.com/article/7591990378707304985
www.dongchedi.com/article/7591982069882929726
www.dongchedi.com/article/7591979961964380734
www.dongchedi.com/article/7591991367992361497
www.dongchedi.com/article/7591980885017723416
www.dongchedi.com/article/7591990705623679512
www.dongchedi.com/article/7591989903215854105
www.dongchedi.com/article/7591989168675488281
www.dongchedi.com/article/7591985092810474009
www.dongchedi.com/article/7591990210763096600
www.dongchedi.com/article/7591987365137433113
www.dongchedi.com/article/7591988325352129049
www.dongchedi.com/article/7591987781866979902
www.dongchedi.com/article/7591987756226658841
www.dongchedi.com/article/7591989742904820249
www.dongchedi.com/article/7591988304665920025
www.dongchedi.com/article/7591987384788009497
www.dongchedi.com/article/7591987725625197081
www.dongchedi.com/article/7591979709920346649

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 1:49:16

AI如何革新电路设计?在线仿真新体验

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于AI的电路在线仿真平台&#xff0c;支持用户上传电路图或输入电路描述&#xff0c;自动生成仿真结果。平台应包含以下功能&#xff1a;1. 支持常见电子元件库&#xff…

作者头像 李华
网站建设 2026/3/22 20:42:07

5分钟创建Maven原型项目:快速验证你的技术方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Maven原型项目生成器&#xff0c;功能&#xff1a;1.主流框架(Spring/MyBatis等)模板库 2.可视化依赖选择器 3.自动生成可执行demo代码 4.一键部署测试环境 5.原型评估报告…

作者头像 李华
网站建设 2026/3/17 1:12:23

Vue-Cropper入门:10分钟实现第一个图片裁剪应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个最简单的Vue-Cropper入门示例&#xff0c;要求&#xff1a;1. 通过CDN引入Vue和Vue-Cropper&#xff1b;2. 实现基本的图片上传和裁剪功能&#xff1b;3. 提供清晰的操作指…

作者头像 李华
网站建设 2026/3/13 10:06:42

5分钟快速验证你的2025字体创意原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 制作一个极简的字体原型测试器&#xff1a;用户输入任意文字&#xff08;默认‘2025’&#xff09;&#xff0c;即时生成可拖拽的3D字体模型。支持快速切换材质&#xff08;玻璃、…

作者头像 李华
网站建设 2026/3/19 18:03:31

新手入门必看:电机控制器FOC基础原理图解

从零理解FOC&#xff1a;电机控制器中的“黄金标准”控制法你有没有想过&#xff0c;为什么现在的空调越来越安静&#xff1f;为什么电动牙刷能精准调节转速而不抖动&#xff1f;甚至为什么新能源汽车加速时那么平顺、几乎没有顿挫感&#xff1f;答案很可能藏在一个听起来有点“…

作者头像 李华
网站建设 2026/3/25 17:37:05

FP16精度推理效果测试:速度与画质的权衡

FP16精度推理效果测试&#xff1a;速度与画质的权衡 在如今内容创作日益自动化的背景下&#xff0c;高质量语音生成正从实验室走向大众应用。播客、有声书、在线教育等场景对长文本、多角色语音合成的需求持续攀升&#xff0c;而传统TTS系统在面对数十分钟连贯对话时&#xff0…

作者头像 李华