版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1相关知识回顾1、函数的重载 函数重载可以使一个函数名具有多种功能,即具有多种形态,称这种特性为 。多态性 当函数的参数 不同,或者参数 不同时,函数可以重载。仅有函数返回值不同 区分重载函数。类型个数不能 有些函数重载时参数个数相同,只是类型不同,此时重载函数比较繁琐,可利用 实现。函数模板第1页,共70页。22、函数模板 c+规定模板以 关键字和一个形参表开头。template 将函数模板与某个具体数据类型连用,就产生了 ,又称这个过程为函数模板实例化,这种形式就是类型参数化。模板函数例如:T max(T a, T b)if(ab) return a; else return b;temp
2、late 另外,c+还专门定义了一个仅仅用在模板中的关键字 ,它的用途之一是代替template参数列表中的关键字class。typename函数执行时确定参数类型的函数称为模板函数。第2页,共70页。32、函数模板 函数模板是不能直接执行的,需要实例化为模板函数后才能执行。使用格式:模板函数名 (实参表) (显式比较准则)或者:模板函数名 (实参表) (默认方式)第3页,共70页。4如有函数模板如下:template T max(T a,T b)if(ab) return a;else return b;m1=max(3,8);m2=max(3.6,12.5);m3=max(a,A);m1=
3、max(3,8);m2=max(3.6,12.5);m3=max(a,A);或者则对该函数模板的使用有:注:要想省去显式调用的麻烦,条件是由这个调用的函数参数表能够惟一地去标识出模板参数的一个集合。 在调用函数模板时, 的类型决定到底使用模板的哪个版本。也就是说,模板的参数是由 的参数推断出来的。函数参数函数第4页,共70页。5class PointIntint x,y;public:PointInt(int a=0,int b=0):x(a),y(b)void setxy(int a,int b)x=a;y=b;void showxy()coutx,yendl;int getx()retur
4、n x;int gety()return y;class PointFloatfloat x,y;public:PointFloat(float a=0,float b=0):x(a),y(b)void setxy(float a,float b)x=a;y=b;void showxy()coutx,yendl;float getx()return x;float gety()return y;void main()PointInt a(3,4);a.showxy();PointFloat b(1.2,3.4);b.showxy();分析以下程序的结果(lt7_1a.cpp)第5页,共70页。
5、6class PointIntint x,y;public: PointInt( int a=0, int b=0):x(a),y(b) void setxy( int a, int b)x=a;y=b; void showxy()coutx,yendl; int getx()return x; int gety()return y;class PointFloatfloat x,y;public: PointFloat(float a=0, float b=0):x(a),y(b) void setxy(float a, float b)x=a;y=b; void showxy()coutx
6、,yendl; float getx()return x; float gety()return y;分析以下程序的结果(lt7_1a.cpp)分析PointInt类和PointFloat类的异同?类中的数据成员以及实现的操作相同,只是数据类型不同。为了避免因为类的数据类型不同而产生的重复性设计,可以将这些数据类型从类中分离出来形成一个通用的数据类型T,为这个数据类型T设计一个操作集,就是类模板 T TT T T T TTTTTTTT第6页,共70页。7将数据类型抽象出来而形成的操作集:class PointT x,y;public:Point(T a=0,T b=0):x(a),y(b)vo
7、id setxy(T a,T b)x=a;y=b;void showxy()coutx,yendl;T getx()return x;T gety()return y;第7页,共70页。87.1类模板 类模板使用户可以为类定义一种模式,使得类中的某些数据成员、成员函数的参数和返回值能取得任意数据类型。 类模板用于实现类所需数据的类型参数化。所以类模板也称为参数化类。第8页,共70页。9一、类模板基础知识1、类模板声明的一般格式:template class 类名 类体;class PointT x,y;public:Point(T a=0,T b=0):x(a),y(b)void setxy(
8、T a,T b)x=a;y=b;void showxy() coutx,yendl;T getx()return x;T gety()return y;template 例如:模版以template关键字和一个形参表开头。第9页,共70页。10void setxy (T a,T b)x=a;y=b;Point :template class PointT x,y;public:Point(T a=0,T b=0):x(a),y(b)void setxy(T a,T b)x=a;y=b;void showxy()coutx,yendl;T getx()return x;T gety()retur
9、n y; void setxy(T a,T b)x=a;y=b;void setxy(T, T);template 注:在类体外面定义成员函数时,必须用template重写类模板声明!第10页,共70页。11注:在类体外面定义成员函数时,必须用template重写类模板声明!(P148)一般格式为:template 返回类型 类名:成员函数名(函数参数列表)函数体指template的内使用class(或typename)声明的类型参数。如上例中的:template void Point:setxy (T a,T b)x=a;y=b;第11页,共70页。122、类模板对象 类模板不能直接使用,必
10、须先实例化为相应的模板类,定义该模板类的对象后才能使用。 初始化类模板时,只要传给它指定的数据类型(如int,float,double等),编译器就用指定的类型代替模板参数产生相应的模板类。 用类模板定义对象的一般格式: 类名 对象名(构造函数实参列表) 或者: 类名 对象名 编译器不能从构造函数参数列表推断出模板实例化参数类型,所以必须显式地给出对象的参数类型第12页,共70页。13例如:template class PointT x,y;public:Point(T a=0,T b=0):x(a),y(b)void setxy(T a,T b)x=a;y=b;void showxy()co
11、utx,yendl;T getx()return x;T gety()return y;void main()Point a(3,4); a.showxy(); Point b(1.2,3.4); b.showxy();显式地给出对象的参数类型第13页,共70页。14例题:分析以下程序结果(lt7_3.cpp)#include using namespace std;template class sumT msize;public: sum(T a=0,T b=0,T c=0,T d=0) m0=a;m1=b; m2=c;m3=d; T s() T add=0; for(int i=0;isi
12、ze;i+)add+=mi; return add;void main()sum x(1,2,3,4);sum y(a,1,-32,1);sum z(1.2,2.3,3.4,4.5); coutx.s()endl;couty.s()endl;coutz.s()endl;第14页,共70页。15二、类模板的派生与继承 类模板也可以继承。声明模板继承之前,必须重新声明类模板。模板类的基类和派生类都可以是模板类或者非模板类,本节只介绍其中两种情况:1、从非模板类派生类模板第15页,共70页。16class Point /非模板类protected:int x,y;public: Point( int
13、 a=0, int b=0):x(a),y(b) void showxy() coutx,yendl;template /从非模板类派生类模板class Line: public Point T x2,y2;public:Line(int a,int b,T c,T d):Point(a,b)x2=c;y2=d;void setline(int a,int b,T c,T d)x=a;y=b;x2=c;y2=d;void showLine()coutPoint1坐标:;showxy();coutPoint2坐标:;coutx2,y2endl;T length()return sqrt(x2-x
14、)*(x2-x)+(y2-y)*(y2-y);void main()Line a(1,1,1,3); a.showLine (); couta线段长度: a.length()endl; Line b(1,1,1.0,5.8); coutb线段长度: b.length()endl;第16页,共70页。172,从类模板派生一个类模板 类模板使用时,须指出类模板的参数给出类模板参数后得到一个模板类继承后成员的访问权限变化同一般类的继承第17页,共70页。18class Point /非模板类protected:int x,y;public: Point( int a=0, int b=0):x(a)
15、,y(b) void showxy() coutx,yendl;template /从非模板类派生类模板class Line:public Point T x2,y2;public:Line(int a,int b,T c,T d):Point (a,b)x2=c;y2=d;void setline(int a,int b,T c,T d)x=a;y=b;x2=c;y2=d;void showLine()coutPoint1坐标:;showxy();coutPoint2坐标:;coutx2,y2endl;T length()return sqrt(x2-x)*(x2-x)+(y2-y)*(y2
16、-y);template TTT/类模板/从类模板派生类模板void main()Point a(3.5,6.8);a.showxy();Lineab(4,5,6,7);ab.showLine ();coutab线段长度: ab.length ()endl;Lineac(1.5,2.5,4.5,6.5);ac.showLine ();coutac线段长度: ac.length ()endl;第18页,共70页。19类模板总结类模板的定义格式类模板的成员函数定义在类体外时注意事项类模板如何产生一个模板类并定义对象类模板与函数模板不同之处:类模板无法从构造函数的参数中判断出T的类型,必须显式给出模
17、板的参数。类模板的派生类模板继承普通类, 类模板派生类模板第19页,共70页。20课程回顾1.如果一个模板声明列出多个参数,则多个参数之间必须使用逗号隔开,每个参数都必须重复使用关键字_ _。classs第20页,共70页。21数组:用于存放相同类型的数据;通过数组元素使用;数组一旦定义,其大小即固定不变;可使用泛型算法。7.2向量与泛型算法 向量是C+中一维数组的类版本,它与数组相似,其中的元素是连续存储的,不同的是:向量中存储元素的多少可以在运行中根据需要动态地增长或缩小。向量:用于存放多个相同类型的数据;利用对象使用;可动态指定向量中元素的个数;提供了多个成员函数以方便数据使用;可使用泛
18、型算法。第21页,共70页。22一、定义向量列表是C+中的类模板。使用时加头文件vector。向量的声明形式:(以下形式中length表示长度,type表示类型,name表示向量对象名)1)vector name; /定义type的向量空表,没有元素2)vector name(length); /定义具有lengh个type的向量,元素初始化为03)vector name(length,n); /定义具有lengh个type的向量,元素初始化为n4)vector name(name1); /使用已定义的向量name1构造向量name5)vector name(a , a+长度); /将已经定义
19、好的数组a的内容复制给向量第22页,共70页。23向量的定义形式:1)vector name;2)vector name(length);3)vector name(length,n);4)vector name(name1);5)vector name(a,a+length);例题:1)定义字符型空向量A2)定义5个int型向量B,元素初始化为03)定义10个int型向量C,元素初始化为3vectorA;vectorB(5);vectorC(10,3);4)用向量C构造向量DvectorD(C);5)定义5个字符型向量E,并初始化为aD=BvectorE(5,a);6)将B赋值给D同类型的向
20、量可以相互赋值,而不管它们的长度如何。向量可以改变赋值目标的大小,使它的元素数目与赋值源的元素数目相同。第23页,共70页。24向量的定义形式:1)vector name;2)vector name(length);3)vector name(length,n);4)vector name(name1);5)vector name(a,a+length);例题:7)若已有数组定义如下: int a5=1,2,3,4,5; 则:把数组中的全部元素复制到向量F中vectorF(a,a+5);第24页,共70页。25向量的声明形式:第25页,共70页。26向量的使用:由vector定义的对象C+中称
21、为向量同类型向量可相互赋值,不同类型不可相互赋值同类向量长度不同也可相互赋值向量中的元素使用类似数组元素,可使用向量名下标向量具有成员函数size()可得到向量长度第26页,共70页。27例题:补全程序并分析程序结果(lt7_6a.cpp)#include #include using namespace std;void main()int a=1,2,3,4,5; vectorF(a,a+3); cout有F.size()个元素,分别为:endl; for(int i=0;iF.size();i+) coutFi ; coutendl;向量具有成员函数size()可得到向量长度向量中的元素
22、使用类似数组元素,可使用向量名下标的形式第27页,共70页。28向量的使用(分析以下程序段得结果)第28页,共70页。29二、泛型指针与操作对象的数据类型相互独立的算法称为 。泛型算法1、向量成员函数begin(),end(),rbegin(),rend() 其含义为:begin() 表示向量中首元素的地址end() 表示最后一个元素的下一个地址rbegin() 表示向量中最后一个元素的地址rend() 表示首元素的前一个地址若有:int x=1,2,3,4,5;vector a(x,x+5);12345a.begin()a.end()a.rbegin()a.rend()第29页,共70页。3
23、0特别注意向量的成员函数begin() +1 表示下一个地址end()-1 表示前一个地址rbegin()+1 表示前一个地址rend()-1 表示下一个地址第30页,共70页。31例题:用begin(),end(),rbegin(),rend()函数输出向量元素。(lt7_6b.c),按要求填空#include #include using namespace std;void main()int a=1,2,3,4,5; vectorF(a,a+5); cout向量F有 F.size() 个元素,分别为:endl; for(int i=0;i F.size() ;i+) /正向输出向量中的
24、元素 cout *(F.begin()+i) ; coutendl;输出向量元素的个数第31页,共70页。32若有向量定义:vector F(a,a+5)for(int i=0;i F.size() ;i+) /正向输出向量中的元素 cout *(F.begin()+i) ; coutendlfor(int i=0;i F.size() ;i+) /正向输出向量中的元素 cout *(F.rend()-i-1) ; coutendlfor(int i=0;i F.size() ;i+) /逆向输出向量中的元素 cout *(F.end()-1-i) ; coutendlfor(int i=0;
25、i F.size() ;i+) /逆向输出向量中的元素 cout *(F.rbegin()+i) ; coutendl第32页,共70页。332、利用普通指针指向向量元素向量成员函数begin(),end(),rbegin(),rend()可以取得向量中某个元素地址指针可以存放地址用指针可以指向向量中的元素注意:指针类型必须同要指向的数据类型一致如有:vector v(10,1); int *p;则: p=v.begin(); /指针p指向了v中的首元素若使p指向尾元素可使用语句:p=v.end()-1;注意:只能用正向指针来赋值,而不能用逆向指针赋值。如:p=v.rbegin() 或者 p=
26、rend()都是错误的。第33页,共70页。34例题:用普通指针输出向量元素(lt7_6c.cpp)若有向量定义:int a=1,2,3,4,5; vector v(a,a+5); int *p; for( p=v.begin() ; pv.end(); p+) /正向输出向量中的元素 cout *p ; cout=v.begin() ; p- ) /逆向输出向量中的元素 cout *p ; coutendl; 第34页,共70页。353、泛型指针类模板vector中提供了一个通用指针iterator,如果用T表示向量的参数化数据类型,iterator相当于T*。注意:泛型指针是使用类实现的
27、该指针可指向向量中的元素 可使用*p表示它指向的元素值 只能用正向指针给p赋值,如begin()、end()。1)用iterator声明正向泛型指针的形式: vector:iterator 指针名例如:vector:iterator p; 表示定义了一个指向int型向量的指针p第35页,共70页。36用iterator声明正向泛型指针的形式: vector:iterator 指针名例题:如有向量定义vector v(5,9 ); 则:定义一个可以指向向量v的指针p应使用语句:vector:iterator p;使p指向向量v的首元素,可使用语句:p=v.begin(); for( int i=
28、0 ; iv.size();i+) /正向输出向量中的元素 cout *( p+i) =v.begin ; p- - ) /逆向输出向量中的元素 cout *p ;第36页,共70页。37练习:补全程序并分析运行结果(lt7_6d.cpp)#include#include #includeusing namespace std;void main()char s=happy; vectorv(s,s+strlen(s); vector:iterator p; /定义一个指向v的向量指针p p=v.begin(); for(int i=0;iv.size();i+) cout*(p+i); co
29、ut=v.begin ();p-) cout*p; coutendl;第37页,共70页。381)对向量的访问可以是双向的。 用reverse_iterator声明逆向泛型指针的形式: vector:reverse_iterator 指针名注意:如此定义的指针只能由逆向指针rbegin()和rend()赋值.第38页,共70页。39例题:分析如下程序的运行结果(lt7_6d2.cpp)#include#include #includeusing namespace std;void main()char s=happy; vectorv(s,s+strlen(s); vector:revers
30、e_iterator p; cout正向字符串:=v.rbegin();p- - ) cout*p; coutendl; cout逆向字符串:endl; for(p=v.rbegin();p=v.rend ();p+ ) cout*p; coutendl; 第39页,共70页。40特别注意(总结)向量不是数组!向量名不是数组名,不表示地址!也不可使用&取向量元素的首地址!int *p; vector c;p=c;p=&c; 不可使用如此形式!第40页,共70页。41特别注意(总结)向量的成员函数begin() +1,表示下一个地址end()-1表示前一个地址rbegin()+1表示前一个地址r
31、end()-1表示下一个地址第41页,共70页。42特别注意: (总结)普通指针变量和iterator 指针变量(如int *p; 或者 vector:iterator p;)只能被赋值为begin(), end()p=c.begin() 正确p=c.end() 正确p=c.rbegin() 此形式错误!p=c.rend() 此形式错误!第42页,共70页。43特别注意: (总结)逆向泛型指针变量如(如vector:reverse_iterator p;)只能被赋值为rbegin(),rend()p=c.rbegin() 正确p=c.rend() 正确p=c.begin() 此形式错误!p=c
32、.end() 此形式错误!第43页,共70页。44 1、数组内容反转 reverse(a,a+Len)2、1)复制数组的内容 copy(a,a+Len,b)2)反向复制数组的内容 reverse_copy(a,a+Len,b)3、将数组内容按升序排序 sort(a,a+Len)4、1)正向输出数组的内容copy(a,a+Len,ostream_iterator(cout,”字符串”)回顾常用的泛型算法:三、向量的数据类型第44页,共70页。454、2)反向输出数组的内容reverse_copy(a,a+Len,ostream_iterator(cout,”字符串”)注:以上几个函数:rever
33、se、copy、reverse_copy、sort以及copy和reverse_copy用于屏幕输出在使用时,应加对应的头文件 。即在程序头使用: #include 第45页,共70页。465、将数组内容按降序排序 sort(a,a+Len,greater()6、查找数组内容 find(a,a+Len,value)注:使用以上两个函数时还需要加对应的头文件 。即在程序头使用: #include #include 第46页,共70页。47三、向量的数据类型向量不仅可以存取int,double等普通数据类型,也可存储对象,结构体、指针等第47页,共70页。48综合练习#include /综合实例l
34、t7_7a.cpp#include #include #include using namespace std;void main() int a=1,4,3,2; vectorva(a,a+4),vb(4);copy(va.begin(),va.end(),ostream_iterator(cout, );coutendl;reverse_copy(va.begin(),va.end(),ostream_iterator(cout, );coutendl;copy(va.begin(),va.end(),vb.begin(); copy(vb.begin(),vb.end(),ostream
35、_iterator(cout, );coutendl;sort(va.begin (),va.end();copy(va.begin(),va.end(),ostream_iterator(cout, );coutendl;reverse_copy(va.begin(),va.end(),vb.begin(); copy(vb.begin(),vb.end(),ostream_iterator(cout, );coutendl;sort(va.begin(),va.end(),greater();copy(va.begin(),va.end(),ostream_iterator(cout, )
36、;coutendl;第48页,共70页。49void main() int a=1,4,3,2; vectorva(a,a+4),vb(4);copy(va.begin(),va.end(),ostream_iterator(cout, );coutendl;reverse_copy(va.begin(),va.end(),ostream_iterator(cout, );coutendl;copy(va.begin(),va.end(),vb.begin();copy(vb.begin(),vb.end(),ostream_iterator(cout, );coutendl;sort(va.
37、begin (),va.end();copy(va.begin(),va.end(),ostream_iterator(cout, );coutendl;reverse_copy(va.begin(),va.end(),vb.begin();copy(vb.begin(),vb.end(),ostream_iterator(cout, );coutendl;sort(va.begin(),va.end(),greater();copy(va.begin(),va.end(),ostream_iterator(cout, );coutendl;1 4 3 22 3 4 11 2 3 44 3 2
38、 14 3 2 11 4 3 2第49页,共70页。50例题:使用结构做为向量元素(lt7_8a.cpp)#include #include using namespace std;struct struint a; double b; x =1,2.2,3,4.4;void main()vectorvs(2); /结构指针作为向量的数据类型 for(int i=0;i2;i+) vsi= for( i=0;i2;i+) couta=a,b=bendl;第50页,共70页。51例题:使用复数类作为向量元素(lt7_8b.cpp)#include #include #include using
39、namespace std;void main()complexn =complex(2.5,3.5), complex(3.5,4.5);vectorcomplex*v(2); for(int i=0;i2;i+) vi= for( i=0;i2;i+) cout实部:real() ,虚部:imag()endl;第51页,共70页。52例题:类作为向量元素(lt7_8c.app)#include #include #include using namespace std;class personstring name; char sex; int age;public: person(str
40、ing s=未命名,char c=X,int n=0) name=s;sex=c;age=n; void set(string s,char c,int n) name=s;sex=c;age=n; void show() cout姓名:namet性别:“ sext年龄ageendl;void main()vectorper(3); per0.set(张三,F,30); per1.set(李四,M,40); per2.set(王五,M,35); for(int i=0;i3;i+) peri.show();第52页,共70页。531、访问向量容量信息的方法size(), max_size(),
41、 capacity(), empty()用于得到当前向量的大小信息四、向量最基本的操作方法向量有许多成员函数提供不同的操作。1)size(): 返回当前向量中已经存放的对象的个数。2)max_size(): 返回向量可以容纳的最多对象的个数。3)capacity(): 返回无需再次分配内存就能容纳的对象的个数。当存放空间已满,又增加一个元素时,它在原来的基础上自动翻倍扩充空间,以便存放更多的元素。4)empty(): 测试向量是否为空,为空时返回true。第53页,共70页。54例题(lt7_9a.cpp)#include #include using namespace std;void m
42、ain() coutsize:tmax_sizetcapatempty:endl; vectorv0; coutv0.size()tv0.max_size()t“ v0.capacity()tv0.empty()endl; vectorv1(5); coutv1.size()tv1.max_size()t“ v1.capacity()tv1.empty()endl; vectorv2(3,5); coutv2.size()tv2.max_size()t“ v2.capacity()tv2.empty()endl; v2=v1; coutv2.size()tv2.max_size()t“ v2.
43、capacity()tv2.empty()endl;第54页,共70页。552、访问向量中对象的方法1)front():返回向量中的第一个元素2)back():返回向量中的最后一个元素3)operator(n):返回向量中下标为n的元素第55页,共70页。56例题:分析以下程序的运行结果(lt7_9.cpp)#include #include using namespace std;void main()char s=abcdef;vectorvs(s,s+strlen(s);coutfirst is:vs.front() endl;coutlast is:vs.back() endl;for
44、(int i=0;ivs.size();i+)coutvs.operator (i);coutendl;第56页,共70页。573、在向量中插入对象的方法1)push_back(const T&):在尾部插入一个元素2)insert(iterator it,const T&): 在it所指的向量位置前插入一个元素3)insert(iterator it,size_type n,const T&X): 在it所指的向量位置前插入n个值为X的元素第57页,共70页。58例题(lt7_10a.cpp)class personstring name; char sex; int age;public:
45、 person( ) void set( ) void show() cout姓名:namet性别: sext年龄ageendl;void main()person per3=person(张三,F,30), person(李四,M,40),person(王五,M,35); vectorv(per,per+3); cout共有v.size() 个人endl; cout可以存放v.capacity() 个人endl; for(int i=0;iv.size();i+)vi.show();v.operator (i).show();第58页,共70页。59void main() coutthe l
46、ast one is:; v.back().show(); cout“新加一人!”endl; /尾部追加1人 v.push_back(person(赵六,M,18); cout共有v.size() 个人endl; cout可以存放v.capacity() 个人endl; coutthe last one is:; v.back().show();第59页,共70页。60void main() cout“新插入2人!”endl; /新插入2人 v.insert(v.begin()+2,2,person(赵六,M,18); cout共有v.size()个人endl; cout可以存放v.capacity()个人endl; for(i=0;iv.size();i+) v.o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国消防救援学院《城市土地管理》2023-2024学年第一学期期末试卷
- 郑州体育职业学院《电动汽车原理与设计》2023-2024学年第一学期期末试卷
- 长春人文学院《西方政治思想史汪聂才》2023-2024学年第一学期期末试卷
- 浙江工贸职业技术学院《C程序设计》2023-2024学年第一学期期末试卷
- 食品卫生检测技术的发展
- 策划感恩节新媒体活动模板
- 清明文化在媒体传播中的挖掘模板
- 元旦跨年夜祝福语
- 统编版五年级语文上册寒假作业(一)(有答案)
- 徐州幼儿师范高等专科学校《创业基础实践》2023-2024学年第一学期期末试卷
- 2024年浙江杭州师范大学附属医院招聘笔试真题
- 学校自习室管理及收费方案
- 2025年护理部护士理论培训计划
- 环保管家管家式管家式一站式服务合同
- 医疗废物污水培训
- 《用锐角三角函数解决问题(3)》参考课件
- 房地产营销策划 -佛山龙湾壹号学区房项目推广策略提案方案
- 产品共同研发合作协议范本5篇
- 风水学的基础知识培训
- 2024年6月高考地理真题完全解读(安徽省)
- 吸入疗法在呼吸康复应用中的中国专家共识2022版
评论
0/150
提交评论