model和template的区别,c 中常见的模板类型有哪些

model和template的区别?
template多指模板,固定的模板框架,比较详细。例如,作文模板。
model多指模型,例如,机器人模型
c++中常见的模板类?
模板类英文为class template,template的中文翻译为模板,故此,模板类的意思实际上是:类的模板。
从名字中我们就可以看得出来,模板类是基本上等同于一个模具,当参数给定时,生成详细的类,也叫实例化。它的提出主要是为了减少代码重复。
比如,我们可以用下面的代码交换两个数b和c
a = b;
b = c;
c = a;
这个交换过程与a,b,c的详细类型没相关系,因为这个原因我们可以用它来交换两个整数,或者两个浮点数。更大多数情况下的,我们可以用来交换两个具有赋值运算符的类型。因为这个原因,可以用模板进行大多数情况下化:
templateclass T
void swap(T b, T c){
a = b;
b = c;
c = a;
}
上面讲解的这个不是模板类,而是模板函数。不过他们的概念是类似的。这当中一开头的template代表后面尖括号中的是模板参数(类似于函数的参数),class代表参数是类(对应的,可以用templateint N来声明整型参数)。后面的代码和的函数基本没有区别,只是用T来代替了详细的类型,比如int,double等。按照需我们可以用swapint(b,c)来交换两个整数,swapdouble(b,c)交换两个浮点数。因为编译器可以按照b,c的详细类型推导T的详细含义,因为这个原因可以简写为swap(b,c)。
回到模板类,假设我们需一个类型来代表变动数组,且该类型支持size成员函数。假设是整型的类,我们可能会写
class vector_int{
size_t size() const;
};
假设某日,我们又需浮点类型的变动数组,可能又会写
class vector_double{
size_t size() const;
};
于是就可以发现它们的代码是如此的类似,因为这个原因我们期望将它大多数情况下化。如同swap函数的做法,我们将它定义为模板类:
templateclass T
class vector{
size_t size() const;
};
因为这个原因,vec_int基本上相当于vectorint,而vector_double基本上相当于vectordouble。因为运用模板类的语法类似于
vectorT a;
因为这个原因,编译器没办法为我们推导T的详细含义,故此,不可以像模板函数一样进行简写。
上面是比较简单的情况,有的时候,候我们需的类在大多数情况下差不多的,但是,针对某哪些特殊情形可能有一定的差别,比如我们可能期望针对bool类型的数组能尽可能减少内存的使用,用一个比特位代表一个bool值。以此,我们的数组不是通过bool a[10]的形式来定义。在这样的情况下,c++提供了模板特化,其实就是常说的说当模板的参数取某个详细的值时,我们使用不一样的模板,定义方法请看下方具体内容:
template
class vectorbool{
size_t size() const;
};
因为,它是一个特化的模板类,故此,唯有普通模板存在的情况下,它的存在才是合法的,不然我们是对什么进行特化的呢?
C++中模板是什么东西?
模板类英文为class template,template的中文翻译为模板,故此,模板类的意思实际上是:类的模板。从名字中我们就可以看得出来,模板类是基本上等同于一个模具,当参数给定时,生成详细的类,也叫实例化。它的提出主要是为了减少代码重复。
比如,我们可以用下面的代码交换两个数b和ca = b;b = c;c = a;这个交换过程与a,b,c的详细类型没相关系,因为这个原因我们可以用它来交换两个整数,或者两个浮点数。
更大多数情况下的,我们可以用来交换两个具有赋值运算符的类型。因为这个原因,可以用模板进行大多数情况下化:template
考研复习资料下载
华宇考试网考研免费资料下载
-
百度网盘提取码:gha7
考研视频课程
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!
相关推荐:
考研培训班-名师辅导课程

>>考研培训班视频课程,听名师讲解<<

>>考研培训班视频课程,听名师讲解<<