模板的用法

模板是c++中的泛型编程
test1.cpp
template<typename T>
T sum(T a ,T b)//定义点,编译模板的头部,调用点,编译模板体
{
 return a+b;
}
//template<typename T,typename L=double>//仅允许在类模板上使用默认模板参数,c++11添加了函数模板的默认值
template<typename T,typename L>
T getval()
{
 T  a=20;//初始化
 return a ;
}
template<typename T>
bool  Compare(const T a ,const T b)
{
 cout<<"compare(T)"<<typeid (T).name()<<endl;
 return a>b;
}
template<>//模板特例化,模板重载,模板特例化会在此编译模板函数,类型匹配直接调用即可,不需要编译器在生成模板函数
bool  Compare<char *>(char *const a ,char * const b)
{
 cout<<"compare(char * ,char *)"<<endl;
 return strcmp(a,b)>0;
}
//template<>
//bool  Compare<char *>(char *a ,char * b)
//{
// cout<<"compare(char * ,char *)"<<endl;
// return strcmp(a,b)>0;
//}

template<typename T,int size>//模板的参数列表可以有类型参数和非类型参数,非类型参数必须是常量,并且不允许double,float
void Show(T *arr)
{
 //size=8;//error size不能改变
 for(int i=0;i<size;++i)
 {
  cout<<arr[i]<<" ";
 }
 cout<<endl;
}

template <typename t>
t add(t a,t b);//模板声明
int main()
{
 sum<int>(10,20);//通过传入类型进行类型替换模板实例化生成模板函数,编译模板体,在调用点
                              //(typedef类型替换,在编译期间,有安全检查)
 sum(10,20);//实参推演,根据传入的数值,编译器推测出实参类型,再进行模板实例化,类型必须精确匹配,不能产生二义性
 //sum(10,20.1);//error,实参是int double,形参是T ,T不知道要匹配哪个实参,产生二义性
    //getval<int>();//error 没有与参数列表匹配的 函数模板 getval 的实例
 getval<int,double>();//无参数,必须传入类型<int,double><typename T,typename L>一一对应

 Compare(10,20);
 char *p="hello";
 char *q="world";
 Compare (p,q);//调用的是模板的特例化,函数重载调用顺序是普通函数>模板特例化>模板
 Compare ("abdc","seda");//调用的是模板,因为形参是char const *
 auto rt=getval<int ,double>();//auto自动识别变量的类型
 cout<<typeid (rt).name()<<endl;
 int arr[]={23,4124,55,16,0,8};
 Show<int,sizeof(arr)/sizeof(arr[0])>(arr);
 add(10,20);///
 return 0;
}


test2.cpp

template <typename t>
t add(t a,t b)
{
 return a+b;
}
//编译错误,找不到外部引用的符号,因为模板在编译的时候只编译头部,只有在调用点才编译模板体,文件分开编译,所以
//找不到文件的模板体
template int add<int>(int ,int);//显示实例化,不管有无调用,都要生成一个模板函数
//但是不可能每调用一次就显示实例化一次,所以定义在头文件中是最好的,引用头文件时,会在预编译阶段展开代码,编译
//可以找到模板体,内联函数一般也写在头文件中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: elsarticle 模板是一种用于 LaTeX 文档排版的模板,主要用于撰写学术论文、期刊文章等。使用该模板需要先下载安装 elsarticle 宏包,然后在 LaTeX 文档中引用该宏包并设置相应的参数,即可使用该模板进行排版。 具体使用方法如下: 1. 下载安装 elsarticle 宏包,可以在 CTAN 网站上下载。 2. 在 LaTeX 文档中引用 elsarticle 宏包,例如: \usepackage{elsarticle} 3. 设置文档类型和格式,例如: \documentclass[preprint,12pt]{elsarticle} 其中,preprint 表示预印本,12pt 表示字体大小为 12 磅。 4. 设置作者信息和标题,例如: \title{My Article} \author{Author 1\corref{cor1}\fnref{label2}} \address{Address 1} \cortext[cor1]{Corresponding author} \fntext[label2]{I also want to say hello.} 5. 编写正文内容,例如: \begin{document} \maketitle \section{Introduction} This is the introduction. \section{Methodology} This is the methodology. \section{Results} This is the results. \section{Conclusion} This is the conclusion. \end{document} 6. 编译 LaTeX 文档,生成 PDF 文件。 以上就是 elsarticle 模板的使用方法。需要注意的是,该模板有一些特殊的命令和环境,需要根据具体情况进行设置和使用。 ### 回答2: elsarticle 模板是 Elsevier 公司提供的一种 LaTeX 文档模板,被广泛应用于各种学术期刊投稿过程中。使用该模板可以方便地撰写高质量的学术论文。 在使用 elsarticle 模板前,需要确保已经安装了 LaTeX 软件,并且将 elsarticle.cls 文件和相应的宏包文件放到了 TeX 的搜索路径下。 使用 elsarticle 模板创建一个新文档非常简单。首先,在文档的开头加入下面的代码: \documentclass[preprint,12pt]{elsarticle} 其中,preprint 表示预印本模式,即单栏、双行间距的模式;12pt 表示正文的字号为 12 磅。 接下来,可以添加文章的标题、作者和摘要。例如: \title{文章标题} \author{第一作者\corref{cor1}} \ead{author1@email.com} \cortext[cor1]{通讯作者} \author{第二作者} \ead{author2@email.com} \address{作者所在机构} \begin{abstract} 文章摘要。 \end{abstract} 之后,可以按照正常的 LaTeX 文档编写格式,撰写文章正文,例如: \section{引言} 这是引言部分。…… \section{实验方法} 在这一节中,我们介绍实验的方法和步骤。 \subsection{实验设计} 我们设计了一组实验来测试…… 最后,可以添加参考文献,例如: \bibliography{reference} 其中,reference 表示参考文献的文献库文件名。可以使用 BibTeX 等工具生成该文件,也可以手动添加文献条目。 完成以上步骤后,可以编译并输出 PDF 文件。例如使用 pdflatex 命令编译,再使用 bibtex 命令编译参考文献,最后再使用 pdflatex 命令编译两次以正确输出交叉引用。对于较复杂的论文,还可以使用 refcheck 等工具检查交叉引用的正确性。 总之,使用 elsarticle 模板撰写学术论文非常便捷。如果你需要撰写学术论文,不妨使用 elsarticle 模板,提高写作效率,提升论文质量。 ### 回答3: Elsarticle 模板是一种用于 LaTeX 的科技文献排版模板,它由 Elsevier 出版社开发并提供免费下载。使用此模板可以很方便地编写并排版高质量的科技论文。 首先,介绍一下如何使用此模板。下载 elsarticle.zip 文件并解压缩,可以得到 elsarticle 模板的所有文件和示例内容。其中包括 elsarticle.cls、elsarticle-template-num.tex 和 elsarticle-reference-num.bib 等文件。这些文件中最重要的一个是 elsarticle.cls 文件,它是整个模板的核心文件。同时,elsarticle-template-num.tex 是一个示例文档,它演示了相应的用法。 在开始撰写论文之前,需要确保计算机中已经安装了相应的编辑器以及 LaTeX 环境。在 Windows 平台上,可以使用 MiKTeX 或者 TeX Live 编辑器;在 Linux 平台上,可以使用 texlive 编辑器。这些编辑器都可以通过官方网站免费下载。 接下来,将 elsarticle.cls 文件拷贝到 LaTeX 组件中的 /texmf/tex/latex/base/目录下。然后,将 elsarticle-template-num.tex 和 elsarticle-reference-num.bib 文件分别复制到计算机中的本地目录中,例如创建一个名为 myarticle 的文件夹,并在该文件夹中放置这些文件。在该文件夹中,打开 elsarticle-template-num.tex 文件,并使用编辑器进行修改编辑,以满足自己论文的要求。 在打开的论文文件中,会发现一些给定的命令和示例。其中包括一些段落和标题,以及如何添加文字、图表和参考文献等细节。根据自己的需求逐步修改这些内容,以便于生成最终想要的排版效果。 当论文编写完成后,可以通过 xelatex 命令来编译生成相应的 PDF 文件。在运行完成之后,就可以得到一个漂亮的、符合学术期刊格式的论文。在此过程中,需要遵循一些 LaTeX 的基本命令和语法约束,以保证整个文档的准确性和可读性。 总体而言,elsarticle 模板是一种非常好用的 LaTeX 模板,可以用于编写高质量的科技文献。通过遵循标准的排版约束和学术规范,可以生成符合出版社要求的论文。使用该模板还需要一些 LaTeX 的基础知识和经验,但是一旦掌握了,就可以使用该模板轻松地编写和排版任何一篇科技论文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值