0、本章内容:
标准C++ string类。
模板auto_ptr、unique_ptr和share_ptr。
标准模板库(STL)。
容器类。
迭代器。
函数对象(functor)。
STL算法。
模板initiaslzer_list。
1、string类:
1.1 构造字符串
string实际上是模板具体化basic_string< char>的一个typedef,同时省略了与内存管理相关的参数。
1.2 string类输入
指定分界字符后,换行符被视为常规字符。
1.3 使用字符串
String对全部6个关系运算符都进行了重载。
1.4 string还提供了哪些功能
capacity返回占用内存,reserve申请内存。
1.5 字符串种类
char、wchar_t、char16_t、char32_t。
2、智能指针模板类:
2.1 使用智能指针
三个智能指针模板都定义了类似指针的对象,可以将new获得的地址赋给这种对象。
智能指针类都带有一个explicit构造函数,因此不需要自动将指针转换为智能指针对象。
2.2 有关智能指针的注意事项
auto_ptr、unique_ptr建立所有权、share_ptr引用计数。
2.3 unique_ptr为何优于auto_ptr
unique_ptr能够区分是否安全,而且有一个可用于数组的变体。
2.4 选择智能指针
share_ptr包含一个显式构造函数,能够把右值unique_ptr转换为share_ptr。
3、标准模板库:
STL提供了一组表示容器、迭代器、函数对象和算法的模板。
3.1 模板类vector
3.2 可对矢量执行的操作
3.3 对矢量可执行的其他操作
可以定义适用于所有容器的非成员函数。
3.4 基于范围的for循环
foreach不能修改容器内容,只是创建临时变量来显示输出。
4、泛型编程:
4.1 为何使用迭代器
4.2 迭代器类型
输入、输出、正向、双向、随机访问。
4.3 迭代器层次结构
4.4 概念、改进和模型
迭代器为改进,而非继承。
4.5 容器种类
不能将类型对象存储在容器中,除非类型是可复制构造和可赋值的。
4.6 关联容器
set、multiset、map、multimap。
4.7 无序关联容器(C++11)
5、函数对象:
5.1 函数符概念
一元函数、二元函数、一元谓词、二元谓词。
5.2 预定义的函数
transform有两个版本。
5.3 自适应函数符和函数适配器
可以将二元函数修改为一元函数。
6、算法:
6.1 算法组
6.2 算法的通用特征
6.3 STL和string类
next_permutation算法将区间内容转换为下一种排列方式。
6.4 函数和容器方法
remove函数有多用性。
6.5 使用STL
7、其他库:
7.1 vector、valarray 和 array
valarray类没有begin和end方法,是对象不是指针。
slice对象参数为其实索引、索引数、跨距。
7.2 模板initializer_list(C++11)
不能进行隐式的缩窄转换。
7.3 使用initializer_list
不能修改initializer_list中的值,因为initializer_list迭代器返回类型为const。
8、总结:
null。