1、什么是模板?
模板是一种不关注输入、输出数据类型,只关注数据处理相关算法实现的编程,也称为泛编程。自定义模板是开放人员根据需要设计的模板,其模板的编码工作由开发人员完成,而标准模板是使用系统自带的标准模板库(STL),其模板的实现代码不需要自己完成,开放人员可以直接使用。
2、模板定义有何规则?
不管是函数模板还是类模板,在声明或定义时,只能在全局命名空间或类范围内进行。不能在局部范围内,不能在函数内(包括main函数)声明或定义一个模板。
3、函数模板怎样定义?
函数模板定义的标准格式:
template <typename 形参名1,typename 形参名2,...>
返回类型 函数名
{
函数体
}
4、类模板怎样定义?
类模板定义的标准格式:
template <typename 形参名1,typename 形参名2,...>
class 类名
{
//...
};
6、为什么模板需要特殊化处理?
模板是一个通用的样板程序,不能满足所有情况,可能存在特殊情况,使定义的模板无法得到预期的结果。
7、什么是全特化?
模板形参中没有任何参数,这样的模板特殊化称为全特化。
8、什么是偏特化?
模板的部分形式确定下来了,如:
template <typename T, unsigned int N>
class Stack{ // ..};
模板参数中N的类型是确定的,即Stack 模板的部分形参做了特殊化处理。
9、C++的内置标准模板库分为哪几种?
·容器(containers)
·迭代器(iterators)
·空间分配器(allocator)
·适配器(adapters)
·算法(algorithms)
·仿函数(functors)
10、容器有何共性?
·构造函数
·析构函数
·支持赋值运算符和比较运算符
·交换函数:swap
·插入函数:insert
·删除函数:erase
·清空函数:clear
·查看当前容器使用容量函数:size
·查看容器最大存储容量函数:size
·检查容器是否为空函数:empty