news 2026/2/18 22:59:22

现代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/2/15 5:06:47

GLM-4.6V-Flash-WEB模型能否识别珊瑚礁鱼类产卵行为?

GLM-4.6V-Flash-WEB模型能否识别珊瑚礁鱼类产卵行为&#xff1f; 在海洋生态研究中&#xff0c;一个看似简单却极具挑战的问题正在浮现&#xff1a;我们能否让AI“看懂”一条鱼是不是在准备产卵&#xff1f;传统方法依赖科学家逐帧回放水下录像&#xff0c;耗时数月甚至数年。而…

作者头像 李华
网站建设 2026/2/15 8:24:25

H桥驱动电路原理与应用:电机控制项目实例

从零搞懂H桥&#xff1a;不只是驱动电机&#xff0c;更是掌控运动的钥匙你有没有过这样的经历&#xff1f;给电机通上电&#xff0c;它转了——但方向不对&#xff1b;想让它慢点跑&#xff0c;结果一调PWM就“嗡嗡”响得像要散架&#xff1b;更糟的是&#xff0c;某次调试后芯…

作者头像 李华
网站建设 2026/2/14 18:38:47

伺服驱动器PCB布局布线思路中高频回路处理操作指南

伺服驱动器PCB设计实战&#xff1a;高频回路的“隐形电路”如何决定系统成败&#xff1f;在工业自动化现场&#xff0c;一台高性能伺服驱动器突然出现电机抖动、编码器失步甚至频繁重启——排查软件逻辑无误、更换MCU也无效&#xff0c;最终发现根源竟藏在PCB板上几毫米的走线差…

作者头像 李华
网站建设 2026/2/13 13:49:13

MICROSOFT VISUAL C++实战应用案例分享

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个MICROSOFT VISUAL C实战项目&#xff0c;包含完整的功能实现和部署方案。点击项目生成按钮&#xff0c;等待项目生成完整后预览效果 作为一名长期使用Visual C进行开发的程…

作者头像 李华
网站建设 2026/2/12 20:52:56

GLM-4.6V-Flash-WEB模型对森林火灾火线蔓延的图像预测

GLM-4.6V-Flash-WEB模型对森林火灾火线蔓延的图像预测 在一场突发的山林大火中&#xff0c;每一分钟都关乎生死。传统的灾情评估往往依赖卫星遥感和地面报告&#xff0c;等信息汇总到指挥中心时&#xff0c;火势可能已经蔓延数公里。如今&#xff0c;随着AI视觉理解能力的跃升&…

作者头像 李华
网站建设 2026/2/18 9:00:18

VibeVoice集成LLM理解上下文,实现真正语境感知语音合成

VibeVoice&#xff1a;当LLM真正“听懂”对话&#xff0c;语音合成才开始有灵魂 你有没有试过用TTS读一段多人访谈&#xff1f;哪怕音色再自然&#xff0c;听着听着总会觉得不对劲——语气突兀、轮次生硬、情绪错位。问题不在于声音本身&#xff0c;而在于系统根本“不懂”这段…

作者头像 李华