news 2026/6/16 16:40:13

现代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/6/15 12:34:06

未知usb设备(设备描述)识别方法:新手教程指南

从“未知USB设备”到精准识别&#xff1a;一次深入硬件与协议的实战排错之旅 你有没有遇到过这样的场景&#xff1f; 插上一个开发板、串口模块&#xff0c;甚至是一块刚焊好的自制电路板&#xff0c;电脑“叮”一声响&#xff0c;接着在设备管理器里多出一个带着黄色感叹号的…

作者头像 李华
网站建设 2026/6/15 14:34:11

传统微调 vs LLAMA-FACTORY:效率提升300%的秘诀

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个效率对比实验项目&#xff0c;要求&#xff1a;1.相同硬件环境下对比原生PyTorch和LLAMA-FACTORY的训练速度 2.记录显存占用、迭代速度等关键指标 3.可视化不同batch size…

作者头像 李华
网站建设 2026/6/15 14:38:08

如何用AI自动优化HEVC视频编码参数

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个HEVC视频编码优化工具&#xff0c;能够自动分析输入视频的内容特征&#xff08;如运动复杂度、纹理细节等&#xff09;&#xff0c;基于AI模型推荐最佳编码参数配置&#…

作者头像 李华
网站建设 2026/6/15 14:59:09

技术创新点提炼:可用于专利申请的关键技术

VibeVoice-WEB-UI&#xff1a;面向长时多角色对话的语音合成系统创新架构 在播客、有声书和虚拟主播内容爆发式增长的今天&#xff0c;用户对语音合成的要求早已超越“能说话”的基本功能。他们需要的是自然如真人对话般流畅、角色分明且可持续数十分钟不中断的音频输出。然而&…

作者头像 李华
网站建设 2026/6/15 18:09:03

JAVA萌新必看:轻松理解版本警告及解决方法

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式JAVA版本教学工具&#xff0c;通过可视化界面展示项目配置中源发行版和目标发行版的关系。当用户遇到源发行版17需要目标发行版17警告时&#xff0c;工具会逐步引导…

作者头像 李华
网站建设 2026/6/15 14:34:12

语音AI新范式:以LLM为中枢的对话理解与语音生成协同

语音AI新范式&#xff1a;以LLM为中枢的对话理解与语音生成协同 在播客创作者反复调整角色语气、有声书朗读者因情绪断层而重录整章的日常背后&#xff0c;一个长期被忽视的技术瓶颈正浮出水面&#xff1a;我们真的能让机器“说话”&#xff0c;还是仅仅在“念字”&#xff1f;…

作者头像 李华