template c++用法(c++模板类的用法)

2025-06-21 16:30:02 :1

template c++用法(c++模板类的用法)

大家好,今天小编来为大家解答以下的问题,关于template c++用法,c++模板类的用法这个很多人还不知道,现在让我们一起来看看吧!

本文目录

c++模板类的用法

//顺序表的实现 模板类
#include《iostream》
#include《string》
using namespace std;
const int MaxSize=100;
bool error;
template《class T》
class SeqList
{
public:
SeqList(){length=0;}; //无参构造函数
SeqList(T a,int n); //有参构造函数
~SeqList(){}; //析构
void Insert(int i,T x); //在i位置插入x
int GetLength(){return length;}; //求表长
T Del(int i); //删除第i个元素
T Get(int i); //按位查找 取第i个元素
int Locate(T x); //按值查找 求x为第几个元素
void PrintList(); //遍历并输出
private:
T data;
int length;
};
//有参构造函数
template《class T》
SeqList《T》::SeqList(T a,int n)
{
int i;
if (n》MaxSize) {cout《《"上溢"《《endl; error=true;}
else for(i=0;i《n;i++) data;
}
//在i位置插入x
template《class T》
void SeqList《T》::Insert(int i,T x)
{
int j;
if (length》=MaxSize) {cout《《"表满,无法插入"《《endl; error=true;}
else if(i》length+1||i《1) {cout《《"位置异常"《《endl; error=true;}
else
{
for(j=length-1;j》=i-1;j--)
data;
data=x;
length++;
};

}
//删除第i个元素
template《class T》
T SeqList《T》::Del(int i)
{
int x,j;
if(i》length||i《1) {cout《《"位置异常"《《endl; error=true;return 0;}
else
{
x=data;
for(j=i-1;j《=length-1;j++)
data;
length--;
return x;
}
}
//按位查找 取第i个元素
template《class T》
T SeqList《T》::Get(int i)
{
if(i》MaxSize||i《1) {cout《《"位置异常"《《endl; error=true;return -1;}
else return data;
}
//按值查找 求x为第几个元素
template《class T》
int SeqList《T》::Locate(T x)
{
int i;
for(i=0;i《length;i++)
if (data==x) return i+1; //相同的值?
return 0;
}
//遍历并输出
template《class T》
void SeqList《T》::PrintList()
{
int i;
cout《《"-----------------------------------------------------------------------";
cout《《endl;
cout《《"|";
for(i=0;i《length;i++)
cout《《" "《《data《《" |";
cout《《endl;
cout《《"-----------------------------------------------------------------------"《《endl;
}
int main()
{
cout《《"顺序表的实现(模板类)"《《endl;
cout《《"************************************"《《endl;
cout《《"* 1.插入 *"《《endl;
cout《《"* 2.按位查找 取第i个元素 *"《《endl;
cout《《"* 3.按值查找 求x为第几个元素 *"《《endl;
cout《《"* 4.删除 *"《《endl;
cout《《"* 5.输出顺序表 *"《《endl;
cout《《"* 6.输出表长 *"《《endl;
cout《《"* 7/help 输出此表 *"《《endl;
cout《《"* 8/exit.退出 *"《《endl;
cout《《"************************************"《《endl;

int flag,ins_loc,x,tab,len;
flag=0;
SeqList《int》List;
while (flag==0)
{
error=false;
cout《《"Please input the command(input 7 to get the command list):"《《endl;
cin》》tab;
switch(tab)
{
case 1:
{
cout《《"Please input the insert location:"《《endl;
cin》》ins_loc;
cout《《"Please input the insert num:"《《endl;
cin》》x;
List.Insert(ins_loc,x);
break;
}
case 2:
{
cout《《"Please input the location:"《《endl;
cin》》ins_loc;
x=List.Get(ins_loc);
if(!error)
cout 《《"The number is:"《《x《《endl;
break;
}
case 3:
{
cout《《"Please input the number you want to find in the list:"《《endl;
cin》》x;
ins_loc=List.Locate(x);
if(!error)
cout《《"The number’s location is:"《《ins_loc《《endl;
break;
}
case 4:
{
cout《《"Please input the location you want to delete:"《《endl;
cin》》ins_loc;
List.Del(ins_loc);
break;
}
case 5:
{
List.PrintList();
break;
}
case 6:
{
if(!error)
len=List.GetLength();
cout《《"The length is:"《《len《《endl;
break;
}
case 7:
{
cout《《"************************************"《《endl;
cout《《"* 1.插入 *"《《endl;
cout《《"* 2.按位查找 取第i个元素 *"《《endl;
cout《《"* 3.按值查找 求x为第几个元素 *"《《endl;
cout《《"* 4.删除 *"《《endl;
cout《《"* 5.输出顺序表 *"《《endl;
cout《《"* 6.输出表长 *"《《endl;
cout《《"* 7/help 输出此表 *"《《endl;
cout《《"* 8/exit.退出 *"《《endl;
cout《《"************************************"《《endl;
break;
}
case 8:
{
flag=1;
break;
}
default:
{
cout《《"The command is no found!"《《endl;
break;
}
}
}
return 0;
}

如图,c++里为什么template还能这样用啊为什么template尖括号里有变量(template)

模板有类型模板和非类型模板两种,你举的这种属于非类型模板。
类型模板类似于template《class T》,T是一种泛型类型,例如char、int、string或是自定义的类型A。类型模板函数template《class T》 void fun(T a),将T实例化为int那么参数a的类型就是int,实例化为A那么参数a的类型就是A。
非类型模板template《int T》同理,只不过它的泛型T不是类型而是int型常量,例如1、3、10。非类型模板的典型应用就是数组长度定义,众所周知int a}这样的写法,调用foo时必须传递一个编译期常量如10,如foo《10》(),即可在函数foo中创建一个长度为10的double数组。

template在C++有用吗

可以
template 《 typename T 》
T max( T a, T b )
{
return a 《 b ? b : a;
}
这个 max 函数就是一个模板函数,它可以传入一个 “类型”的参数,以便实现任意类型求最大值的效果。假设我们这样使用它:
int x=5, y=10;
int z=max 《int》( x, y );
这时候发生了什么呢?我们传入的“类型参数”是int,因此编译器在编译这段代码时会使用 int 来构造一个新函数:
int max( int a, int b )
{
return a 《 b ? b : a;
}
后面的事就和编译普通的函数一样了,C++编译器继续使用强类型系统编译这个函数,由强类型系统来检查这个函数是否正确。
这个过程叫做模板的“特化”,它发生在编译期,当编译器发现模板函数、模板类被使用(注意,不是定义)的时候进行的。这个系统实际上比较像宏,但是比宏更为智能。
很明显,编译器必须知道模板如何特化这个函数,因此模板函数的实现,必须在“使用点”之前,因此模板库只能通过头文件库的形式来提供。

c++ template 累加中实现累乘

我用模板和重载做了一个。不知道满足要求否?

#include 《iostream》
#include 《string》 
using namespace std;
class CrazyNum
{
public:
 CrazyNum(){};
 CrazyNum(int n){m_n=n;};
 ~CrazyNum(){};
 //运算法重载,执行"+"时,实际进行的是乘法
 CrazyNum operator+(CrazyNum n)
 {
  return CrazyNum(m_n * n.m_n);
 }
 CrazyNum operator=(CrazyNum n)
 {
  m_n=n.m_n;
  return CrazyNum(n.m_n);
 }
 //输出流的重载
 friend ostream& operator《《(ostream &os, CrazyNum &n)
 {
  return os 《《 n.m_n;
 }
private:
 int m_n;
};
//把你的模板函数改成模板类了。因为main里面有个".value()"
template《typename T》
class mul
{
public:
 //构造函数,要求b不得小于1
 mul(T a,int b)
 {
  if(b《1)
   cerr《《"**ERROR: b ’"《《b《《"’ is less than 1"《《endl;
  m_a=a;m_b=b;
 };
 ~mul(){};
 //累加。问题中的result没有初始化的。
 T value()
 {
  T result=m_a;
  for(int i=1;i《m_b;i++)
   result=result+m_a;
  return(result);
 };
 //重载输出流。
 friend ostream& operator《《(ostream &os, mul &m)
 {
  return os 《《 m.value();
 };
private:
 T m_a;
 int m_b;
};
int main() 
{  
 CrazyNum cn(2);
    cout 《《 mul《float》(3.5, 1000) 《《 endl 
   《《 mul《string》(string("%"),5) 《《 endl
   《《 mul《CrazyNum》(cn, 10).value() 《《 endl;
}

关于template c++用法,c++模板类的用法的介绍到此结束,希望对大家有所帮助。

template c++用法(c++模板类的用法)

本文编辑:admin

更多文章:


美国疫情为何突然消失(美国会因为疫情迅速衰落吗别天真了,这是不可能的)

美国疫情为何突然消失(美国会因为疫情迅速衰落吗别天真了,这是不可能的)

大家好,如果您还对美国疫情为何突然消失不太了解,没有关系,今天就由本站为大家分享美国疫情为何突然消失的知识,包括美国会因为疫情迅速衰落吗别天真了,这是不可能的的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录美国会因

2026年9月14日 21:15

ascii表什么意思(ASCII码是什么意思)

ascii表什么意思(ASCII码是什么意思)

今天给各位分享ASCII码是什么意思的知识,其中也会对ASCII码是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录ASCII码是什么意思什么是ASCII代码什么是ASCII码ascii码表的意思是在a

2025年9月23日 14:00

嵌入式linux系统论文(嵌入式linux方向的论文写什么好驱动好写吗)

嵌入式linux系统论文(嵌入式linux方向的论文写什么好驱动好写吗)

本篇文章给大家谈谈嵌入式linux系统论文,以及嵌入式linux方向的论文写什么好驱动好写吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录嵌入式linux方向的论文写什么好驱动好写吗求英语高人帮助翻译一下论文摘要,万分感谢有

2025年7月9日 03:30

sql语句常用查询(sql中select语句怎么使用)

sql语句常用查询(sql中select语句怎么使用)

这篇文章给大家聊聊关于sql语句常用查询,以及sql中select语句怎么使用对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录sql中select语句怎么使用SQL Server里常用的语句 有那些按功能分sql查询语句(sq

2025年12月30日 14:45

java中list方法是干嘛的(JAVA里List的详细信息)

java中list方法是干嘛的(JAVA里List的详细信息)

各位老铁们,大家好,今天由我来为大家分享java中list方法是干嘛的,以及JAVA里List的详细信息的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文

2026年3月25日 04:00

广州疫情地图实时动态地图(疫情期间广州星海音乐厅退票详情疫情期间广州星海音乐厅退票详情图)

广州疫情地图实时动态地图(疫情期间广州星海音乐厅退票详情疫情期间广州星海音乐厅退票详情图)

其实广州疫情地图实时动态地图的问题并不复杂,但是又很多的朋友都不太了解疫情期间广州星海音乐厅退票详情疫情期间广州星海音乐厅退票详情图,因此呢,今天小编就来为大家分享广州疫情地图实时动态地图的一些知识,希望可以帮助到大家,下面我们一起来看看这

2025年6月11日 21:15

win10系统提供的三种用户账户级别?如何解决win10系统用户账户受保护

win10系统提供的三种用户账户级别?如何解决win10系统用户账户受保护

其实系统账户的问题并不复杂,但是又很多的朋友都不太了解win10系统提供的三种用户账户级别,因此呢,今天小编就来为大家分享系统账户的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录win10系统提供的三种用户账户级

2025年10月11日 09:30

子选择器的表达方法(关于jQuery,$(“:button“) 中的冒号是什么意思)

子选择器的表达方法(关于jQuery,$(“:button“) 中的冒号是什么意思)

各位老铁们好,相信很多人对子选择器的表达方法都不是特别的了解,因此呢,今天就来为大家分享下关于子选择器的表达方法以及关于jQuery,$(“:button“) 中的冒号是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看

2025年12月30日 12:45

read的句型(you,read,my,can,book的顺序怎么排)

read的句型(you,read,my,can,book的顺序怎么排)

大家好,如果您还对read的句型不太了解,没有关系,今天就由本站为大家分享read的句型的知识,包括you,read,my,can,book的顺序怎么排的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录you,rea

2026年3月30日 18:00

canvas在线设计(canvas设计网站-用canvas画布绘制动画作为网站的banner)

canvas在线设计(canvas设计网站-用canvas画布绘制动画作为网站的banner)

本篇文章给大家谈谈canvas在线设计,以及canvas设计网站-用canvas画布绘制动画作为网站的banner对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘

2025年10月29日 12:00

自学react多久可以上手(自学前端开发需要多久才能达到就业水平)

自学react多久可以上手(自学前端开发需要多久才能达到就业水平)

大家好,关于自学react多久可以上手很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于自学前端开发需要多久才能达到就业水平的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位

2025年11月4日 08:45

IF函数怎么用?if函数如何嵌套使用

IF函数怎么用?if函数如何嵌套使用

大家好,如果您还对if函数不太了解,没有关系,今天就由本站为大家分享if函数的知识,包括IF函数怎么用的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录IF函数怎么用if函数如何嵌套使用excel中函数countif

2025年10月31日 09:00

易语言stc烧录模块(stc烧录器stc89c516rd+下载失败)

易语言stc烧录模块(stc烧录器stc89c516rd+下载失败)

“易语言stc烧录模块”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看易语言stc烧录模块(stc烧录器stc89c516rd+下载失败)!本文目录stc烧录器stc89c516rd+下载失败stc单片机烧录步骤用ch340

2026年7月6日 02:45

全球首颗3nm芯片(iphone15什么时候开抢)

全球首颗3nm芯片(iphone15什么时候开抢)

大家好,全球首颗3nm芯片相信很多的网友都不是很明白,包括iphone15什么时候开抢也是一样,不过没有关系,接下来就来为大家分享关于全球首颗3nm芯片和iphone15什么时候开抢的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2026年4月15日 20:45

模范人物事迹ppt模板(中学生道德模范人物事迹简述材料范文(三篇))

模范人物事迹ppt模板(中学生道德模范人物事迹简述材料范文(三篇))

各位老铁们,大家好,今天由我来为大家分享模范人物事迹ppt模板,以及中学生道德模范人物事迹简述材料范文(三篇)的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2026年9月17日 12:15

caption怎么记忆(VBA中的“caption“应怎么翻译)

caption怎么记忆(VBA中的“caption“应怎么翻译)

大家好,关于caption怎么记忆很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于VBA中的“caption“应怎么翻译的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有

2025年9月20日 18:00

安居客房产怎么样如何挑选适合自己的房子?租房子住找什么平台

安居客房产怎么样如何挑选适合自己的房子?租房子住找什么平台

“安居客找房”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看安居客房产怎么样如何挑选适合自己的房子?租房子住找什么平台!本文目录安居客房产怎么样如何挑选适合自己的房子租房子住找什么平台安居客房产怎么样如何挑选适合自己的房子现

2025年12月26日 05:45

mysql一次写入10万条数据(Mysql,10W条随机批量插入(数据内容为字母和数字组合))

mysql一次写入10万条数据(Mysql,10W条随机批量插入(数据内容为字母和数字组合))

这篇文章给大家聊聊关于mysql一次写入10万条数据,以及Mysql,10W条随机批量插入(数据内容为字母和数字组合)对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录Mysql,10W条随机批量插入(数据内容为字母和数字组合)

2026年4月4日 08:45

java 常用库(Referenced Libraries是什么意思)

java 常用库(Referenced Libraries是什么意思)

本篇文章给大家谈谈java 常用库,以及Referenced Libraries是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录Referenced Libraries是什么意思Java常用包有哪些java 中常用五

2026年1月3日 12:30

accommodation的用法和短语(accommodation的动词)

accommodation的用法和短语(accommodation的动词)

本篇文章给大家谈谈accommodation的用法和短语,以及accommodation的动词对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目

2026年7月9日 22:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索