泛型编程简介

1、数据结构课程的特点:
— 专注于数据元素之间的关系
— 专注于特定结构之上的算法
— 数据结构课程并不关注数据元素的具体类型

如何为数据结构的学习选择合适的语言?
唐老师经验:支持泛型编程的语言是最适合数据结构课程的学习。

2、泛型编程的概念:不考虑具体数据类型的编程方式。
— C++中的函数模板
(1)一种特殊的函数可用于不同类型进行调用
(2)看起来和普通函数很相似,区别是类型可被参数化
— C++中的类模板
(1)以相同的方式处理不同的类型
(2)在类声明前使用templete进行标识
(3)用于说明类中使用的泛指类型T
(4)类模板只能显式指定具体类型,无法自动推导
示例代码:

#include <iostream>

using namespace std;

template <typename T>
void Swap(T& a, T& b)
{
    T t = a;
    a = b;
    b = t;
}

template <typename T>
class Op
{
public:
    T process(T v)
    {
        return v * v;
    }
};

int main()
{
    int a = 2;
    int b = 1;

    Swap(a, b);

    cout << "a = " << a << " " << "b = " << b << endl;

    double c = 0.01;
    double d = 0.02;

    Swap<double>(d, c);

    cout << "c = " << c << " " << "d = " << d << endl;

    Op<int> opInt;
    Op<double> opDouble;

    cout << "5 * 5 = " << opInt.process(5) << endl;
    cout << "0.3 * 0.3 = " << opDouble.process(0.3) << endl;

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值