STL 容器使用技巧和注意事项

5星 · 超过95%的资源 需积分: 29 4 下载量 75 浏览量 更新于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 和配置器等方面,是一本非常有价值的参考书籍。