第01讲 类模板与向量(一)
7.1 类模板
复习内容:函数模板
3.5函数模板
有些函数重载时参数个数相同,只是类型不同,此时重载函数比较繁琐,可利用函数模板实现。
函数模板定义格式:
定义函数模板后,函数调用时根据函数参数来类型来确定调用哪个版本的函数。函数执行时确定参数类型的函数称为模板函数。
此种形式调用中
若某函数参数类型不一致时,也可定义函数模板。
7.1 类模板
7.1.1类模板的基础知识
template
class 类名{
Private:
//成员定义
Protected:
//成员定义
Public:
//成员定义
}
template
类模板的对象: 类名<模板参数> 对象名(参数);
类的成员函数定义(在类体外定义时):
模板类的成员函数定义形式:
template
返回值类型 类名
{ //函数体 }
普通类的成员函数定义形式:
返回值类型 类名 :: 函数名(参数)
{ //函数体 }
7.1.2类模板的派生与继承
模板类继承普通类,模板类作普通类的派生类
继承后成员使用同一般类的继承。
模板类派生模板类
模板类使用时,须指出模板类参数
7.2 向量与泛型算法
7.2.1定义向量列表
向量是C++中一维数组的类版本
用于存放多个相同类型的数据。
可动态指定向量中元素的个数,并提供了多个成员函数以方便数据使用,同时可使用泛型算法。
是C++中的类模板。使用时加头文件vector
向量的声明形式:
vector<类型> 向量名;
vector<类型> 向量名(长度);
vector<类型> 向量名(长度,a);
vector<类型> 向量名1(向量名2);
vector<类型> 向量名(a , a+长度);
(a是数组名)
向量的使用:
同类型向量可相互赋值,不同类型不可相互赋值
同类向量长度不同也可相互赋值
向量中的元素使用类似数组元素,可使用a[i]
向量具有成员函数size()可得到向量长度
第02讲 类模板与向量(二)
7.2.2泛型指针
向量成员函数begin(),end(),begin(),end()
vector a(10,0);
a.begin()表示向量中第0个元素的地址
a.end() 表示最后一个元素后下一个地址
a.rbegin()表示向量中最后一个元素的地址
a.rend() 表示第一个前一个地址
向量成员函数begin(),end(),rbegin(),rend()
可以取得向量中某个元素地址
指针可以存放地址
注意:指针类型必须同向量类型一致
输出向量元素
向量使用时类似数组使用:
利用向量的成员函数输出向量元素
输出向量元素
利用向量的成员函数输出向量元素
利用向量的成员函数输出向量元素
利用普通指针指向向量的首元素地址,利用指针输出向量元素。
类模板vector中提供了一个通用指针iterator
可使用
vector
形式定义一个指向向量的指针
该指针可指向向量中的元素。
类模板vector中提供了一个通用指针reverse_iterator
可使用
vector
形式定义一个指向向量的指针
该指针可指向向量中的元素。
特别注意(总结)
向量不是数组!!向量名不是数组名,不表示地址!也不可使用&取向量元素的首地址!
int p;
vector
p=c;
p=&c; 不可使用如此形式!!
向量的成员函数
begin() +1,表示下一个地址
end()-1表示前一个地址
rbegin()+1表示前一个地址
rend()-1表示下一个地址
reverse_iterator 指针变量
只能被赋值为c.rbegin(),c.rend()
int
或者
vector
p=c.rbegin() 此形式错误!!!!
p=c.rend() 此形式错误!!!!
p=c.begin() 正确
p=c.end() 正确
普通指针变量和iterator 指针变量
只能被赋值为c.begin(),c.end()
int *p; 或者 vector
p=c.rbegin() 此形式错误!!!!
p=c.rend() 此形式错误!!!!
p=c.begin() 正确
p=c.end() 正确
7.2.3向量的数据类型
向量不仅可以存取int,double等普通数据类型,也可存储对象,指针,对象的指针
向量存取对象的指针
7.2.3向量的数据类型
利用泛型算法对向量进行操作
copy
sort
find
reverse_copy
7.2.4向量最基本的操作方法
1,向量容量
size(),max_size(),capacity(),empty()
用于得到当前向量的大小信息
2.使用向量中存放的对象
front(),back(), [i]
a.front()
a.back()
a[i]表示向量中存放的第i个对象。
3.向量中插入对象
push_back(const T &)
insert(iterator it,const T & )
insert(iterator it,size_type n, const T)
当size超出capacity时,capacity翻倍扩容
insert
插入到指针位置之前
insert
插入到指针位置之前并重复插入n个
4.向量中删除对象
pop_back()
erase(iterator it )
clear()
pop_back()删除最后一个对象
erase
删除指定位置的对象
clear
清除所有对象
7.4 出圈游戏