模板参数推导 模板参数推导(template argument deduction),是在调用C++的模板函数时,由编译器根据使用上下文来推断所调用的模板函数的模板参数。这一概念也适用于类的模板成员函数。 类模板也存在模板参数推导的情形。例如: template <class T> struct e ...
分类:
其他好文 时间:
2017-02-22 18:08:29
阅读次数:
340
1.函数包装器 1.设计通用的函数执行接口,可以设置计数(函数执行次数)和关卡2.函数包装器依赖于函数模板,实现通用泛型 3.函数代码可以内嵌在函数中 最基本模板: 1 //函数包装器, T数据类型, F是函数 2 template 3 T run(T v, F f) 4 { 5 static in... ...
分类:
其他好文 时间:
2017-02-18 18:25:40
阅读次数:
116
1.函数指针——指针函数 函数指针的重点是指针。表示的是一个指针,它指向的是一个函数,例子: int (*pf)(); 指针函数的重点是函数。表示的是一个函数,它的返回值是指针。例子: int* fun(); 2.数组指针——指针数组 数组指针的重点是指针。表示的是一个指针,它指向的是一个数组,例子 ...
分类:
其他好文 时间:
2017-02-15 13:39:01
阅读次数:
174
函数模板,顾名思义,是在生成函数时依照的模板。 有时,我们需要对不同的数据类型做同样的函数操作。 比如:分别对一个int类型数 和 一个double类型数求平方。 这时,虽然都是同样的求平方操作(函数体内代码一样),但是我们必须要编写两个不同的函数,因为处理int类型的函数的参数和返回值类型都应该是 ...
分类:
其他好文 时间:
2017-02-13 22:08:54
阅读次数:
196
STL的algorithm库确实给我们提供了这样的便利,使用模板函数transform可以轻松解决这个问题,开发人员只需要提供一个函数对象,例如将char转成大写的toupper函数或者小写的函数tolower函数。 transform原型: 1 #include <string> 2 #inclu ...
分类:
其他好文 时间:
2017-02-13 12:32:08
阅读次数:
223
模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的。 模板分为类模板与函数模板,特化分为全特化与偏特化。全特化就是限定死模板实现的具体类型,偏特化就是如果这个模板有多个类型,那么只限定其中的一部分。 模版特化:任何针对模版参数进一步进行条件限制设计的特化版 ...
分类:
其他好文 时间:
2017-02-08 14:21:03
阅读次数:
169
1.问题,最近看项目log模块,_log模板函数中的一个参数竟然看蒙x了。函数原形是这样: template<size_t size>void _Log(char (&strDest)[size], const char *scetion, const char *key, const char * ...
分类:
编程语言 时间:
2017-02-01 19:48:24
阅读次数:
206
标准库在<algorithm>头中定义了两个模板函数std::min() 和 std::max()。通常用它可以计算某个值对的最小值和最大值。可惜在 Visual C++ 无法使用它们,因为没有定义这些函数模板。原因是名字min和max与<windows.h>中传统的min/max宏定义有冲突。为了 ...
分类:
其他好文 时间:
2017-01-15 14:44:29
阅读次数:
228
一,函数模板 1.函数模板的概念 C++中提供了函数模板,所谓函数模板,实际上是建立一个通用函数,其函数的返回值类型和函数的参数类型不具体指定,用一个虚拟的类型来表示。这个通用函数就被称为函数的模板。 当我们在开发中,经常会遇到一些函数体实现方式类似的函数,例如交换两个字符,交换两个数字函数,这两个 ...
分类:
编程语言 时间:
2017-01-14 18:54:56
阅读次数:
329
函数模板 函数模板的目的 设计通用的函数,以适应广泛的数据型式 函数模板的定义格式 template<模板型式参数列表>返回值型式 函数名称(参数列表); 原型:template<class T> void Swap(T &a, T&b); 实现:template<class T> void Swa ...
分类:
编程语言 时间:
2017-01-08 07:58:02
阅读次数:
238