stl是c++编程中非常重要的一个内容,之前这方面基础薄弱,后面学习工作中,将时常与stl打交道,所以在这里将stl从基础开始重新学习一遍!
01模板
概述
模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。
模板是一种对类型进行参数化的工具;
通常有两种形式:
函数模板和类模板;
1.函数模板针对仅参数类型不同的函数;
2.类模板针对仅数据成员和成员函数类型不同的类。
为什么有模板?
使用模板的目的就是能够让程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些类型无法实现,要实现这些类型的交换就要重新编写另一个swap函数。使用模板的目的就是要让这程序的实现与类型无关,比如一个swap模板函数,即可以实现int 型,又可以实现double型的交换。模板可以应用于函数和类。
函数模板通式
template <class 形参名,class 形参名,......>
返回类型 函数名(参数列表)
{
函数体
}
其中template和class是关键字,class可以用typename 关键字代替,在这里typename 和class没区别,<>括号中的参数叫模板形参,模板形参和函数形参很相像,模板形参不能为空。
实例
template<class T> //T来代替类型
void Mywap(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
}
//template只对后面跟着第一个函数起作用
调用模板函数模板的俩种方式
1.不生命类型调用:编译器根据你传入的值,进行类型自动推导
2.显式指定类型
//如何使用
void test01()
{
int a = 10;
int b = 20;
//1.编译器根据你传入的值,进行类型自动推导
Mywap(a, b);//
cout << a << " " << b<<" " << endl;
//2。显示指定类型
Mywap<int>(a, b);
}