C++ Primer Plus:第十六章 - string类和标准模板库

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。

你可能感兴趣的:(C++,基础构建,string类和标准模板库)