码迷,mamicode.com
首页 > 其他好文 > 详细

第八课、泛型编程简介

时间:2017-05-06 11:54:18      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:不同   swap   结构   泛型   float   数据结构   关系   无法自动   strong   

一、数据结构的特点

1、专注于数据元素之间的关系

2、专注于特定结构之上的算法(如针对数组结构我们可以设计排序算法等等)

注:数据结构课程并不关心数据元素的具体类型

二、为学习数据结构选择合适的语言

1、由于数据结构并不关心具体的数据类型,故支持泛型编程的语言最适合和数据结构课程的学习

三、泛型编程的概念

1、不考虑具体数据类型的编程方式

void Swap(T& a, T& b)
{
    T t=a;
    a=b;
    b=t;
}
Swap算法中的T并不是一个具体的数据类型,而是泛指任意的数据类型

2、c++中的函数模板

(1)、是一种特殊的函数,可以用不同的类型进行调用
(2)、看起来和普通的函数很类似,两者的区别就是函数模板可参数化
template <typename T>//template 告诉编译器开始泛型编程,typename T告诉编译器T是一个泛指类型
void Swap(T& a, T& b)
{
    T t=a;
    a=b;
    b=t;
}

函数模板的调用方式:

自动类型推导调用

int a = 1;
int b = 2;
Swap (a,b);//自动推导

具体类型显示调用

float c = 0.01;
float d = 0.02;
Swap<float>(c, d);//显示调用

3、c++中的类模板

(1)、以相同的方式处理不同的类型

(2)、在类声明前使用template进行标识

(3)、<typename T>用来说明类中使用的泛指类型T

template <typename T>
class Test
{
public:
    T  Add(T  a, T b);
};

类模板的使用方式

(1)、只能显示指定具体类型,无法自动推导

(2)、定义对象就指定具体的类型

Test<int> t1;//定义对象时就显示指定类型
int ret  = t1.Add(3, 5); //进行两个int类型数据的相加

四、小结

(1)、模板是泛型编程理论在c++中的实现

(2)、函数模板支持参数的自动推导和显示指定

(3)、类模板在使用时只能显示指定类型

(4)、类模板非常适用于编写数据结构相关的代码

第八课、泛型编程简介

标签:不同   swap   结构   泛型   float   数据结构   关系   无法自动   strong   

原文地址:http://www.cnblogs.com/gui-lin/p/6815964.html

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