C++泛型编程的方法是什么-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

C++泛型编程的方法是什么

本文小编为大家详细介绍“C++泛型编程的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++泛型编程的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

创新互联专业提供成都服务器托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买成都服务器托管服务,并享受7*24小时金牌售后服务。

我们先来看看数据结构的特点:1、专注于数据元素之间的关系;2、专注于特定结构之上的算法。数据结构并不关注数据元素的具体类型

那么如何为数据结构的学习选择合适的语言呢?我们之前有见到过 C 语言版的数据结构,也有 C++ 版的数据结构。但是从耦合性的角度来看,支持泛型编程的语言最适合数据结构的学习。所谓泛型编程便指的是不考虑具体数据类型的编程方式。对于 Swap 函数可以考虑写成泛型写法,如下

void Swap(T& a, T& b)
{
    T t = a;
    a = b;
    b = t;
}

        Swap 泛型写法中的 T 不是一个具体的数据类型,而是泛指任意的数据类型,这样我们是不是就可以代码复用了,不用重复的搬砖了。泛型编程对应于 C++ 中的函数模板,它是一种特殊的函数可用不同类型进行调用。它看起来和普通函数很相似,其区别是类型可被参数化。函数模板格式如下

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

        下来我们来看看函数模板的语法规则:1、template 关键字用于声明开始进行泛型编程;2、typename 关键字用于声明泛指类型。如下图所示

C++泛型编程的方法是什么   

        我们来看看函数模板的使用:1、自动类型推倒调用;2、具体类型显示调用。具体如下

int a = 0;
int b = 1;

Sawp(a, b);          // 自动推导

float c= 2;
float d = 3;

Swap(c, d);    // 显示调用

        我们下面还是以代码为例来进行说明

#include 

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 = 1;
    int b = 2;
    
    Swap(a, b);
    
    cout << "a = " << a << ", " << "b = " << b << endl;
    
    double c = 0.01;
    double d = 0.02;
    
    Swap(d, c);
    
    cout << "c = " << c << ", " << "d = " << d << endl;
    
    Op opInt;
    Op opDouble;
    
    cout << "5 * 5 = " << opInt.process(5) << endl;
    cout << "0.5 * 0.5 = " << opDouble.process(0.5) << endl;
    
    return 0;
}

        我们来编译看看结果,是否如我们代码所写的那样

C++泛型编程的方法是什么

        C++ 中的类模板是以相同的方式处理不同的类型,在类声明前使用 template 进行标识; 用于说明类中使用的泛指类型 T。类模板只能显示指定具体类型,是无法进行自动推导的;使用具体类型 定义对象。在上面的例子中,如果我们在第39, 40行不指定具体类型时,看看会发生什么?

C++泛型编程的方法是什么

读到这里,这篇“C++泛型编程的方法是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。


当前标题:C++泛型编程的方法是什么
分享URL:http://kswsj.cn/article/pjhcdg.html

其他资讯