Effective STL 编程技巧:提高 C++ 容器使用效率
需积分: 10 102 浏览量
更新于2024-07-20
收藏 1.27MB PDF 举报
Effective STL 英文版
Effective STL 英文版是 Scott Meyers 撰写的一本关于 C++标准模板库(STL)的书籍,旨在帮助读者更好地使用 STL 容器和算法。下面是对书籍中各个章节的知识点总结:
Item1. 选择合适的容器
在使用 STL 容器时,选择合适的容器是非常重要的。不同的容器有不同的特点和使用场景,例如 vector 是一个动态数组,list 是一个双向链表,set 是一个排序树等。选择合适的容器可以提高程序的性能和可读性。
Item2. 警惕容器独立代码的illusion
许多开发者认为,使用 STL 容器可以写出与容器无关的代码,但是这是一种illusion。实际上,容器的选择和使用方式对程序的性能和可读性有很大的影响。
Item3. 使对象在容器中的复制变得便宜且正确
在使用 STL 容器时,对象的复制是一个非常重要的问题。我们需要确保对象的复制是便宜且正确的,以避免性能问题和内存泄露。
Item4. 使用 empty() 代替 size() == 0
在检查容器是否为空时,我们通常使用 size() == 0,然而,这种方法并不是最好的,因为它需要遍历整个容器。使用 empty() 方法可以更快地检查容器是否为空。
Item5. 优先使用成员函数而不是单元素对应的函数
在使用 STL 容器时,我们可以使用成员函数或单元素对应的函数。然而,成员函数通常比单元素对应的函数更高效,因为它们可以避免不必要的参数传递。
Item6. 警惕 C++ 的最讨厌的语法解析
C++ 的语法解析规则非常复杂,容易引起语法错误。开发者需要警惕这些语法解析规则,以避免编写错误的代码。
Item7. 在使用 new 分配的指针时,记得释放指针
在使用 STL 容器时,如果我们使用 new 分配的指针,我们需要记得释放这些指针,以避免内存泄露。
Item8. 永远不要创建 auto_ptr 容器
auto_ptr 是一种智能指针,但是它不能用于容器,因为它不能正确地管理指针的生命周期。
Item9. 选择合适的 erase 选项
在使用 STL 容器时,我们需要选择合适的 erase 选项,以避免性能问题和内存泄露。
Item10. 了解分配器约定和限制
STL 容器使用分配器来管理内存,我们需要了解分配器的约定和限制,以避免内存泄露和性能问题。
Item11. 了解自定义分配器的合法使用场景
自定义分配器可以用于特殊的内存管理场景,但是我们需要了解自定义分配器的合法使用场景,以避免内存泄露和性能问题。
Item12. 对 STL 容器的线程安全性有现实的期望
STL 容器的线程安全性是一个复杂的问题,我们需要对线程安全性有现实的期望,以避免线程安全问题。
Item13. 优先使用 vector 和 string
vector 和 string 是 STL 容器中最常用的两个容器,它们提供了高效的内存管理和可读性。
Item14. 使用 reserve 来避免不必要的 realloc
在使用 vector 时,我们可以使用 reserve 来避免不必要的 realloc,以提高性能。
Item15. 警惕 string 实现的变化
不同的编译器和平台可能有不同的 string 实现,我们需要警惕这些变化,以避免编写错误的代码。
Item16. 了解如何将 vector 和 string 数据传递给遗留 API
在使用 vector 和 string 时,我们需要了解如何将数据传递给遗留 API,以避免数据损失和类型不匹配问题。
Item17. 使用“swap trick”来 trim excess capacity
在使用 vector 时,我们可以使用“swap trick”来 trim excess capacity,以提高性能。
2019-01-02 上传
点击了解资源详情
2010-07-21 上传
2012-10-16 上传
2010-06-01 上传
2007-04-27 上传
2011-05-22 上传
2014-02-04 上传
BeyondNum
- 粉丝: 2
- 资源: 36
最新资源
- ArtLinks:链接到我所有的艺术作品
- exam-countdown:一个帮助我跟踪即将到来的考试的小网站
- Excel模板客户登记表.zip
- PV8_PEMFC8_battery10_inverter_ACload_LC_grid_储能_SIMULINK_Battery
- PrivacyBreacher:旨在展示Android操作系统中的隐私问题的应用
- 毕业设计&课设--东南大学本科毕业设计(论文)模版.zip
- magnitude-to-number:将十亿,百万和万亿字符串转换为整数
- txt_wysiwyg:互联网的 TXT WYSIWG 编辑器
- my-delivery-boy
- 485_UART2实验_485采集温湿度_STM32F103_STM32uart2_modbus解析_rs485
- 核
- Yakov_Fain-Book:雅各布精美书
- pi4-cluster-ansible-roles:Ansible角色,用于执行Raspberry Pi 4工作程序节点的初始设置(尚无k8s软件)
- OfficeManagementSystem:一种有助于执行办公室日常活动的系统,包括出勤管理,任务管理,休假管理,投诉管理等
- 毕业设计&课设--高校校园设备管理系统-毕业设计.zip
- FitnessTracker:使用Spring Boot的Fitness Tracker RESTful Web应用程序