自考 C++ 杂记 —— 类模板与向量

目录

一、 类模板

1.1 模板类基础语法

1.2 模板类的派生与继承(仅介绍模板类继承非模板类和从模板类派生一个类模板的情况)

二、 向量与泛型算法

1.定义向量列表

2.泛型指针

3.向量最基本的操作方法

历年真题:


一、 类模板

 

1.1 模板类基础语法

声明类模板

template <typename T> 或者 template < class T>  //带参数T的模板声明,类型T不是类,而是对类的描述,常称为类模板

模板类声明的一般方法

template <类模板参数> 
class 类名
{
    //类体
};

用类模板定义对象

类名 <模板实例化参数模型> 对象名 (构造函数实参列表);
类名 <模板实例化参数模型> 对象名;  //默认或者无参数构造函数

在类体外面定义成员函数时,必须用template重写模板类声明。

template <类模板参数>
返回类型 类名 <模板类型参数> :: 成员函数名(函数参数列表)
{
    //函数体
}

<模板类型参数> 是指 template 的"<>"内使用 class(或typename) 声明的类型参数,构造函数和析构函数没有返回类型,另外C++函数的返回值类型可以是除数组函数以外任何类型

1.2 模板类的派生与继承(仅介绍模板类继承非模板类和从模板类派生一个类模板的情况)

模板类继承非模板类时,由它派生的类的数据成员可以是不同的类型,而模板类派生一个类模板时,两者的数据成员类型一致。

 

二、 向量与泛型算法

与操作对象的数据类型相互独立的算法称为泛型算法

1.定义向量列表

四种构造函数:

1) vectot<type> name; //定义type的向量列表

2) vectot<type> name(length) //定义具有length个type的向量,元素初始化为0

3) vectot<type> name(length, a ) //定义具有length个type的向量,元素初始化为a

4) vectot<type> name1(lname) //使用已定义的向量name构造向量name1

2.泛型指针

泛型算法:与操作对象的数据类型相互独立。

泛型指针的一般形式:vector <type>::iterator 泛型指针名 //逆向为reverse_iterator

3.向量最基本的操作方法

1)访问向量容量信息的方法

size(); //返回当前向量中已经存放的对象的个数

max_size(); //返回向量可以容纳最多对象的个数(由硬件决定)

capacity(); //返回无序再次分配内存就能容纳的对象个数

empty(); //向量为空时返回true

max_size() >= capacity() >=size()

2)访问向量中对象的方法

front(); //返回向量中第1个对象

back(); //返回向量中最后1个对象

operator[ ](size_type, n); //返回向量中的第n+1个对象(下标为n的向量元素)

3)在向量中插入对象的方法

Push_back(Const T&); //向向量尾部插入一个对象

Insert(iterator it,const T&); //是向it所指向量位置前插入1个对象。

Insert(iterator it,size_type n,const T&X); //是向it所指向量位置前插入n个值为X的对象。

4)在向量中删除对象的方法

Pop_back(Const T&); //删除向量中最后一个对象

Erase(iterator it); //删除it所指向的容器对象

Clear(); //删除向量中的所有对象,empty()返回true值

历年真题:

1.模板函数的真正代码是在源程序中__调用函数_时产生。

2.insert(iterator it,const T&)是向it所指向量位置前__插入__个对象。

3.下列有关模板的描述中,错误的是

  • A.模板把数据类型作为一个设计参数,称为参数化程序设计
  • B.使用时,模板参数与函数参数相同,是按位置而不是名称对应的
  • C.模板实例化参数类型包括数据类型和值
  • D.类模板与模板类是同一个概念

【答案】D

【解析】一个类模板(类生成类)允许用户为类定义个一种模式,使得类中的某些数据成员、默认成员函数的参数,某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。如果一个类中的数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的、实际的类,而是代表一类类。模板类是类模板实例化后的一个产物。

【知识点】模板

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值