第七章 类模板与向量_第1页
第七章 类模板与向量_第2页
第七章 类模板与向量_第3页
第七章 类模板与向量_第4页
第七章 类模板与向量_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章类模板与向量,C+程序设计,2,本章主要内容,类模板向量与泛型算法,3,类模板,类与函数一样,当多个类之间只是数据类型不一样时,也可以通过模板的形式定义成一个特定的模板类。该类为需要不同的数据类型的类提供了统一的模板,即类模板。,4,类模板,类模板声明格式如下:templateclass类名.,模板参数可用作数据成员的类型、成员函数的参数类型、成员函数的返回值类型等,templateclassTestTx,y;public:Test(Ta,Tb)x=a;y=b;Tgetx()returnx;Tgety()returny;,5,类模板,类模板的对象创建对象时,显示的指定其数据类型,编译器就

2、用指定的数据类型替代模板参数产生相应的模板类格式如下:类名对象名(构造函数实参列表);Testtest1(15,30);,6,类模板,在类体外面定义成员函数时,必须重写类模板声明template返回类型类名:成员函数名(参数列表).参照P148【例7.2】,7,类模板,类模板也可以像普通类一样继承,继承的方法也一样。继承的基类与派生类既可以是模板类,也可以是普通类。模板类继承普通类参照P149【例7.4】模板类继承模板类参照P150【例7.5】,8,向量与泛型算法,向量:数组的大小是不能改变的,而向量中存储的元素多少可以在运行时根据需要动态的增长或缩小,向量是类模板向量类模板定义在头文件vec

3、tor中,提供了4种构造函数1.vectorname;定义空的向量表vectorA;2.vectorname(length);定义具有length个type的向量,初始化为0vectorB(20);3.vectorname(length,a);定义具有length个type的向量,初始化为avectorC(20,1);4.vectorname1(name);使用已定义的向量name构造新的向量name1vectorD(C);,9,向量与泛型算法,向量的第一个元素从0开始允许同类型的向量之间相互赋值,跟他们的长度无关不能直接使用列表初始化向量,可先定义一个数组,再把数组的内容复制给向量inta3

4、=1,2,3;vectorb(a,a+3);,10,向量与泛型算法,向量的数据类型可以是基本数据类型,也可以是构造类型,但必须符合构成规则参考P154【例7.7】【例7.8】,11,向量与泛型算法,向量具有指向第一个元素的标记begin()和指向结束的标记end()定义泛型指针vector:iterator泛型指针名;定义逆向泛型指针reverse_vector:reverse_iterator指针名;参考P153【例7.6】,12,向量的基本操作方法,访问向量容量信息的方法1.size()返回当前向量中对象的个数a.size();2.max_size()返回向量最多可以容纳多少个对象,取决于

5、硬件结构a.max_size();3.capacity()返回无需再次分配内存就能容纳的对象个数,初始值为最初申请的元素个数,当原来的空间存放满了之后,则在原来的基础上自动翻倍扩充a.capacity();以上三者的关系如下:max_size()=capacity()=size()4.empty()返回当前向量是否为空,若为空返回true值,即返回值为1,反之为0a.empty();,13,向量的基本操作方法,访问向量中对象的方法1.front()返回向量中的第一个对象a.front();2.back()返回向量中的最后一个对象a.back();3.operator(size_typen)返回向量中下标为n的向量元素a.operator(5);参照P156【例7.9】,14,向量的基本操作方法,在向量中插入对象的方法1.push_back(constT,15,向量的基本操作方法,在向量中删除对象的方法1.pop_back()删除向量中最后一个对象a.pop_back();2.erase(iterato

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论