C++ 模板(3) 模板的特化
来源:互联网 发布:锁屏后能录像的软件 编辑:程序博客网 时间:2024/06/08 00:47
C++中,模板的特化可以实现对不同的数据类型进行不同的处理:
比如我们要对int类型的数据用快速排序法进行排序
对float类型的数据用插入排序法进行排序
template<typename T>void sort(T arg[], int size) {cout << "temp speclized use" << endl;}template<> //特化void sort<int>(int arg[], int size) {cout << "int specliazed template" << endl;}template<>void sort<char>(char arg[], int size) {cout << "char speclized template" << endl;}int main() {int array_int[5] = { 1,2,3,4,5 };int size = 5;float array_float[5] = { 1.0, 2.0, 3.0, 4.0, 5.0 };char array_char[5] = { 1,2,3,4,5 };sort<int>(array_int, size);sort<float>(array_float, size);sort<char>(array_char, size);system("PAUSE");return 0;}
输出结果如下:
int specliazed template
temp speclized use
char speclized template
特化的基本格式如下:
// 一个通用的排序程序 template <class T> void sort(T arr[], int size) { // 实现快速排序的代码 } // 模板特化:指定char数据类型的函数 template <> void sort<char>(char arr[], int size) { // 实现计数排序的代码
同时,模板特化对模板类也适用:
比如模板类中,要对int类型的类使用特定操作:
template<class T>class specialUse {public:specialUse() {cout << "general template use" << endl;}};template<>class specialUse<int> {public:specialUse() {cout << "int template use" << endl;}};
使用如下:
specialUse<char> charUse;specialUse<int> intUse;
输出结果如下:
general template use
int template use
模板特化的原理:
当编写了一个模板类或模板函数时,如果编译器碰到了一个新的数据类型或数据类型集合,则编译器会创建一个模板类或模板函数的拷贝
模板函数的特化会使编译器优先检验这个类型的模板函数或模板类
阅读全文
0 0
- 【c++】模板的特化
- C++ 模板(3) 模板的特化
- 模板的特化、偏特化
- C++模板的特化
- C++模板的特化
- C++模板的特化
- 模板的偏特化
- 函数模板的特化
- C++模板的特化
- 模板的特化
- C++模板的特化
- C++模板的特化
- 类模板的特化
- 模板函数的特化
- 模板的偏特化
- 函数模板的特化
- 函数模板的特化
- 函数模板的特化
- Java 开发中的23种设计模式详解
- Meta Learning/Learning to learn
- EMS开发教程概述
- MS coco数据集下载
- Android系统架构
- C++ 模板(3) 模板的特化
- 文件系统学习4 文件操作
- JDK的下载和安装
- 大数据正式16
- mysql事务
- iOS 异步图片加载优化与常用开源库分析
- SpringBoot简单入门(二)
- 怎么查看linux系统的版本,以及是32位或64位系统
- Python的列表操作List