C++ TR1:库扩展与智能指针

需积分: 35 0 下载量 148 浏览量 更新于2024-07-23 收藏 1.43MB PDF 举报
"C++ TR1--英文--清晰--带书签" C++ TR1,全称为Technical Report 1,是C++标准库的一个扩展草案,它在2005年由ISO/IEC发布,旨在增强C++的标准库功能,提供更多的工具和模板类,以支持更高效和安全的编程实践。C++ TR1包含了多个类别和命名空间的扩展,如通用工具、智能指针、函数对象、正则表达式、随机数生成器、四元数和复数等。 1. **关系到C++标准库介绍** C++ TR1是对C++标准库的补充,旨在与现有的C++标准库无缝集成。它扩展了STL(标准模板库),提供了更多现代编程所需的组件。 2. **扩展类别** TR1包括了几种类型的扩展: - **通用工具(General Utilities)**:如参考包装器(reference wrapper)、智能指针(smart pointers)等。 - **函数对象(Function Objects)**:增强了`<functional>`头文件,增加了新的函数对象和适配器。 - **智能指针**:引入了`shared_ptr`、`weak_ptr`和`unique_ptr`,用于更有效地管理内存和解决循环引用问题。 - **正则表达式(Regular Expressions)**:提供了对正则表达式操作的支持。 - **随机数生成器(Random Number Generators)**:添加了多种随机数生成器,增强了统计和模拟功能。 - **其他类型**:如`tuple`、`tr1::array`、`tr1::function`等,提供了更加灵活的数据结构和函数对象。 3. **参考包装器(Reference Wrappers)** `reference_wrapper`是`<functional>`头文件中的新类模板,它允许将函数或成员函数引用封装成一个对象,这样可以传递给其他函数或存储在容器中。`reference_wrapper`有构造、拷贝、赋值、访问和调用等操作。 4. **智能指针** - **`shared_ptr`** 是一个引用计数的智能指针,它负责管理其所指向的对象的生命周期。`shared_ptr`拥有构造函数、析构函数、赋值运算符、修改器、观察者和比较操作等功能,能够避免内存泄漏并处理复杂的依赖关系。 - **`weak_ptr`** 是与`shared_ptr`配合使用的弱引用,用于打破循环引用。当`shared_ptr`引用计数变为零时,`weak_ptr`不再有效。 - **`unique_ptr`** 提供了独占所有权的智能指针,适用于单个对象的所有权转移。 5. **函数对象** TR1扩展了函数对象,包括`not1`、`not2`、`bind1st`、`bind2nd`等,这些函数对象适配器可以用来改变或固定函数或成员函数的参数。 6. **其他扩展** C++ TR1还引入了如`tr1::regex`用于正则表达式匹配,`tr1::random_device`和`tr1::mt19937`等随机数生成器,以及`tr1::tuple`和`tr1::array`等数据结构。 C++ TR1是C++程序员的一个重要资源,它为C++语言提供了更加强大和现代的库支持,极大地丰富了C++的编程模型。虽然许多TR1的内容已经纳入C++11标准,但了解TR1仍然是理解和使用现代C++的关键一步。