模版
简介
C++模板是C++编程语言中的一种强大工具,允许你编写与类型无关的代码。模板分为两种主要类型:函数模板和类模板。
编写泛型代码的两个重要原则:
- 模版中的函数参数是const引用:保证函数可以用于不能拷贝的类型
- 函数体中的条件判断仅使用 < 比较:降低函数对处理类型的要求,只需要支持<,不一定要支持>
1. 函数模板
函数模板允许你创建一个函数模板,这个模板可以处理多种数据类型。其基本形式如下:
使用时,你可以传递不同类型的参数:
2. 类模板
类模板允许你创建一个类模板,该模板可以处理不同的数据类型。基本形式如下:
使用时,你可以指定模板参数:
3. 模板的特化
有时你可能需要对模板的特定类型进行特化,以便提供专门的实现。例如,特化Stack类模板以处理bool类型:
标准模版库
顺序容器
除了固定大小的数组,其它容器都提供高效、灵活的内存管理。没有特殊考虑一般情况选vector。容器的元素类型可以是另一种容器。
顺序容器迭代器
迭代器有多个版本:
- begin 正向迭代器
- rbegin 反向迭代器
- cbegin const迭代器
- crbegin const反向迭代器
泛型算法
关联容器
Pair
定义在头文件utility中 与其他标准库的类型不同,pair的数据成员是public的,所以可以直接
关联容器迭代器
当解引用一个关联容器迭代器时,我们会得到一个类型为容器的value_type的值引用。 当使用一个迭代器遍历关联容器时,迭代器按关键字升序排列元素