模板(c++)

什么是模板?

模板是一个已经设计好的框架,用户自己套用就可以了,提高用户的设计效率

使用场景?

遇到功能一样数据类型不一样的操作,可以设计一个模板,把数据类型通用化,实现泛型编程。

通用类型的定义格式?

template

当一个函数中包含通用类型,那么该函数就是模板函数。

模板函数与普通函数的区别?

如果模板函数与普通函数实现的功能一致时,优先调用普通函数。

如果模板函数的参数比普通函数的参数更加匹配时,优先调用普通函数。

普通函数具有自动类型转换功能,模板函数具有自动类型推导功能。

当模板函数无法推导类型时,用户需多定义几个通用类型,或者指定模板类型

当一个类中包含通用类型,这个类就是模板类。

模板类的特点:模板类必须实例化才能创建对象。模板类没有自动类型推导功能

当模板作为参数传递时,无法直接通过类名传递,解决办法?

1.把模板类的类型实例化

2.把模板类的类型继续模板化

3.直接编写模板函数

模板类的继承问题?

当一个基类是模板类时,无法通过类名直接继承。

1.指定基类的模板类型。

2.继续把基类模板化。

stl(c++标准模板库)是通用类模板和算法的结合,他提供给程序员一些标准的数据结构的实现如:queues(队列)、lists(链表)、stacks(栈)

vector容器底层是顺序表,vector包含一系列连续存储的元素,其行为与数组相似。

vector重写了构造函数

模板(c++)_第1张图片

重写了运算符

模板(c++)_第2张图片

给了很多函数接口

size_type max_size(); //存储最大的数据个数 void clear(); //清空所有元素 TYPE front(); //返回首元素 void pop_back();//删除最后一个元素 void push_back( const TYPE &val ); //添加一个元素 void reserve( size_type size ); //重新修改容量 void resize( size_type size, TYPE val ); //重新修改为 size ,并且存储val size_type size(); //返回容器中元素的个数 void swap( vector &from ); //交换两个向量容器

你可能感兴趣的:(开发语言)