STL 容器使用指南:避免常见错误和提高性能

需积分: 29 0 下载量 181 浏览量 更新于2024-07-20 收藏 1.46MB PDF 举报
Effective STL Effective STL 是一本关于 C++ 标准模板库(STL)的编程指南,旨在帮助开发者更好地使用 STL 容器和算法。下面是对该书中重要知识点的总结: 1. 选择合适的容器 在选择容器时,需要考虑容器的类型、大小和元素的特点。不同的容器有不同的优缺,例如 vector 和 list 分别适用于不同的场景。开发者需要根据实际情况选择合适的容器,以提高程序的效率和可读性。 2. 警惕容器独立代码的幻觉 许多开发者认为,使用 STL 容器可以写出与容器无关的代码,但是这是一种幻觉。实际上,容器的选择和使用对程序的性能和可读性都有很大的影响。开发者需要了解容器的特点和限制,以写出高效、可读的代码。 3. 确保对象的拷贝是廉价和正确的 在容器中,对象的拷贝是一个非常重要的操作。开发者需要确保对象的拷贝是廉价和正确的,以避免程序的性能下降。同时,开发者也需要了解容器对对象拷贝的要求和限制。 4. 使用 empty() 而不是 size() == 0 在检查容器是否为空时,开发者通常使用 size() == 0,但是这并不是最好的方法。使用 empty() 可以提高程序的效率和可读性。 5. 优先使用成员函数 在使用容器时,开发者可以使用成员函数或单元素操作。成员函数通常比单元素操作更高效和可读。开发者需要了解成员函数的优点和使用方法,以提高程序的效率和可读性。 6. 警惕 C++ 的最讨厌的解析 C++ 的语法规则可以导致一些讨厌的解析错误。开发者需要了解这些规则和限制,以避免程序的错误和崩溃。 7. 使用 new 的指针时,记得删除指针 在使用 new 创建指针时,开发者需要记得删除指针,以避免内存泄露。同时,开发者也需要了解容器对指针的要求和限制。 8. 不要创建 auto_ptr 的容器 auto_ptr 是一种智能指针,但是它不能用于容器。开发者需要了解 auto_ptr 的限制和使用方法,以避免程序的错误和崩溃。 9. 选择正确的擦除选项 在使用容器时,开发者需要选择正确的擦除选项,以避免程序的性能下降。同时,开发者也需要了解擦除选项的优点和限制。 10. 了解分配器约定和限制 STL 容器使用分配器来管理内存。开发者需要了解分配器的约定和限制,以避免程序的错误和崩溃。 11. 了解自定义分配器的合法使用 自定义分配器可以帮助开发者更好地管理内存。开发者需要了解自定义分配器的合法使用方法和限制,以避免程序的错误和崩溃。 12. 对 STL 容器的线程安全有现实的期望 STL 容器的线程安全是一个复杂的问题。开发者需要了解 STL 容器的线程安全机制和限制,以避免程序的错误和崩溃。 13. 优先使用 vector 和 string vector 和 string 是 STL 中最常用的容器。开发者需要了解 vector 和 string 的优点和使用方法,以提高程序的效率和可读性。 14. 使用 reserve 来避免不必要的重新分配 在使用 vector 和 string 时,开发者需要了解 reserve 的使用方法,以避免不必要的重新分配。 15. 警惕 string 实现的变化 string 的实现可能会有所不同。开发者需要了解 string 的实现和限制,以避免程序的错误和崩溃。 16. 了解如何将 vector 和 string 数据传递给遗留 API 在使用遗留 API 时,开发者需要了解如何将 vector 和 string 数据传递给这些 API,以避免程序的错误和崩溃。 17. 使用“swap trick”来 trim excess capacity 在使用 vector 和 string 时,开发者可以使用“swap trick”来 trim excess capacity,以提高程序的效率和可读性。