GeekBand C++第六周学习感悟

函数模板笔记

模板是通用的函数描述,也就是说它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。在一些旧的c++标准里面,可以使用class代替typename。

1.重载的模板

需要多个对不同类型使用同一个算法的函数时,可使用模版。然而,并非所有的类型都使用相同的算法。为满足这种需求,可以像重载常规函数定义那样重载模板定义。和常规重载一样的是,被重载的模板的函数特征标必须不同。

2.

模板的局限性

编写的模板可能无法处理某种类型。比如说结构相加,此时有两种解决方法:

1.重载运算符

2.对特定类型提供具体化的模板定义

可以提供一个具体化函数定义-称为显式具体化,其中包含所需的代码。当编译器找到与函数调用匹配的具体化定义时,将使用该定义,而不再寻找模板。

类模板

模板类的性质是,有一个或多个型别未被指定,和函数模板一样,要使用一个模板类,就传入具体的类型作为实参,编译器会基于该类型来实例化模板。对于类模板而言,只有被调用的成员函数才会被实例化,类模板可以用特定的类型特化,类模板也可以用特定的类型特化,类模板也可以用特定的类型偏特化。

泛型编程

泛型编程是一种编程方法,这种方法将类型一种to be specified later 的方式给出,等到调用的时候,再以参数形式,通过具体的特定的类型实例化一个具体的方法或对象。

迭代器

迭代器本身是一个对象,指向另一个对象,用来迭代一组对象,即如果迭代器指向一组对象中的某种元素,则通过increment 以后它就可以指向这组对象中的下一个元素。

容器

Vector 是一个能够存放任意类型的动态数组。Vector 的数据结构和操作与数组类似,在内存中的表现形式是一段地址连续的空间。

Deque  是一个能够存放任意型别的双向队列

Deque 采用了与vector 不同内存管理方法:大块分配内存

List list 是一个能够存放任意类型的双向链表。

你可能感兴趣的:(GeekBand C++第六周学习感悟)