STL 容器使用技巧和注意事项
5星 · 超过95%的资源 需积分: 29 29 浏览量
更新于2024-07-26
收藏 1.46MB PDF 举报
Effective STL
Effective STL 是一本关于标准模板库(STL)的经典书籍,涵盖了 STL 的各种知识点。本书的主要内容包括容器、算法、迭代器、函数对象、_adapter 和配置器等方面。
**容器**
容器是 STL 的核心组件之一,提供了多种数据结构来存储和管理数据。 Effective STL 中提到了以下几点关于容器的知识点:
1. 选择合适的容器:不同的容器适合不同的场景,选择合适的容器可以提高程序的效率和可读性。
2. 避免 container-independent 代码:虽然 STL 提供了多种容器,但是不同的容器有其特点和限制,需要根据实际情况选择合适的容器。
3. 使对象的拷贝cheap 和 correct:在容器中存储对象时,需要确保对象的拷贝操作是cheap 和 correct。
4. 使用 empty() 而不是 size() == 0:在检查容器是否为空时,使用 empty() 方法比 size() == 0 更加高效。
5. 优先使用成员函数而不是单元素操作: STL 提供了多种成员函数来操作容器,优先使用成员函数可以提高程序的效率和可读性。
6. 小心 C++ 的最讨厌的解析: C++ 的语法规则可能会导致一些难以 debug 的问题,需要小心 C++ 的解析规则。
7. 在容器中存储 new 的指针时,记住删除指针:在容器中存储 new 的指针时,需要在容器销毁前删除指针,以避免内存泄露。
8. 从不创建 auto_ptr 的容器: auto_ptr 是 C++98 中的一个类,已经被废弃,不建议使用。
9. 选择删除选项:在删除容器中的元素时,需要选择合适的删除选项,以避免内存泄露和其他问题。
10. 配置器约定和限制: STL 的配置器有其约定和限制,需要了解这些约定和限制以避免问题。
** vector 和 string**
vector 和 string 是 STL 中两个最常用的容器,提供了多种操作来管理数据。 Effective STL 中提到了以下几点关于 vector 和 string 的知识点:
11. 优先使用 vector 和 string 而不是动态分配的数组: vector 和 string 提供了多种操作来管理数据,优先使用它们可以提高程序的效率和可读性。
12. 使用 reserve 来避免不必要的重新分配:在使用 vector 和 string 时,需要使用 reserve 来避免不必要的重新分配,以提高程序的效率。
13. 了解 string 实现的差异:不同的编译器和平台可能会有不同的 string 实现,需要了解这些差异以避免问题。
14. 知道如何将 vector 和 string 数据传递给遗留 API:在将 vector 和 string 数据传递给遗留 API 时,需要了解其中的差异和限制。
15. 使用"swap trick"来 trim excess capacity:在使用 vector 和 string 时,可以使用"swap trick"来 trim excess capacity,以提高程序的效率。
Effective STL 提供了多种关于 STL 的知识点,涵盖了容器、算法、迭代器、函数对象、_adapter 和配置器等方面,是一本非常有价值的参考书籍。
2013-04-18 上传
2019-01-02 上传
2010-07-21 上传
133 浏览量
2012-02-17 上传
2024-12-26 上传
2024-12-26 上传
chaiwp03
- 粉丝: 0
- 资源: 7
最新资源
- Testing-React-Practice
- ADS1292R_stm32ads1292r_ads1292rSTM32_ads1292r_ADS1292R基于STM32的驱动
- 项目
- musicExtractBackend:音乐提取服务的后端
- jsblocks.I18n:jsblocks 框架的小型 I18n 扩展
- Postman-Plot
- Library-Management-System:具有PHP和MySQL的图书馆管理系统
- Python库 | python-ffmpeg-video-streaming-0.0.11.tar.gz
- 预算跟踪器
- Brightnest:家庭自动化系统
- 毕业设计&课设--仿京东商城毕业设计.zip
- BathtubFunctionFit:用于估计第四个多项式函数的参数的Python脚本。 此功能通常用于在等温线种群建模中内插有关死亡率对温度的依赖性的数据
- react-fullstack-boilerplate:沸腾板
- Excel模板考试日程安排表.zip
- rbf_pidtest_matlab
- SimplyCoreAudioDemo::speaker_high_volume:SimplyCoreAudio演示项目