码迷,mamicode.com
首页 > 编程语言 > 详细

C++拾遗--函数模板

时间:2015-02-17 11:43:18      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:泛型   模板   递归   算法   实例   

                        C++拾遗--函数模板

前言

    泛型的核心思想是数据与算法分离。函数模板是泛型编程的基础。

函数模板

函数模板以 template<arg_list> 开头,arg_list是泛型参数的列表。

1.模板的泛型参数个数确定

实例一

下面是一个加法函数模板,在实例化时,我们传入普通的数据类型。

#include <iostream>
using namespace std;

template<typename T1, typename T2>
auto add(T1 t1, T2 t2)->decltype(t1 + t2)
{
	return t1 + t2;
}
int main()
{
	cout << add(12.3, 12) << endl;
	cout << add(12, 12.3) << endl;
	cin.get();
	return 0;
}
运行

技术分享


实例二

我们也可以传入函数类型。

#include <iostream>
using namespace std;

template<typename T, typename F>
void exec(const T &t, F f)
{
	f(t);
}
int main()
{
	exec("calc", system);
	cin.get();
	return 0;
}
运行 system("calc"); 打开计算器

技术分享

2.模板的泛型参数个数不确定

#include <iostream>
#include <cstdarg>
using namespace std;

//这个空参的函数用于递归终止
void show()
{
	
}
//参数个数可变,参数类型也多样
template<typename T, typename...Args>    //typename...Args是可变类型列表
void show(T t, Args...args)
{
	cout << t << ends;
	show(args...);
}
int main()
{
	show(1, 2, 3, 4);
	show('a', 'b', 'c', 'd');
	cin.get();
	return 0;
}
运行

技术分享




所有内容的目录




C++拾遗--函数模板

标签:泛型   模板   递归   算法   实例   

原文地址:http://blog.csdn.net/zhangxiangdavaid/article/details/43865253

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!