• C++泛型函数及模版类


    什么是泛型编程?

    简单来说,泛型编程,意思就是针对广泛类型的编程方式。具体类型可以有不同的实现方式,但是针对广泛类型编程,就能在需要调用时才指定参数类型或者调用类型。

    泛型编程是一种基于发现高效算法的最抽象表示的编程方法。也就是说,以算法为起点并寻找能使其工作并且有效率的工作的最一般的必要条件集。

    可以想象的是,很多算法都需要相同的必要条件集,并且这些必要条件集有不同的实现方式。STL标准模版库就是泛型编程的例子。

    泛型函数怎么写?

    #include<iostream>
    using namespace std;
    template<typename T>
    T * My_find(T *array,T n,T x){
    	T* p = array;
    	int i;
    	for(i=0;i<n;i++){
    		if(*p == x){
    			return p;
    		}
    		p++;
    	}
    	return 0;
    }
    int main(){
    	int a[] = {1,2,3,4,5,6,7,8,10};
    	int *result = My_find<int>(a,10,3);
    	cout<<(*result)<<"
    "<<endl;
    	return 0;
    }
    

    上面这个例子是一个泛型函数的实现。

    template<typename T> 

    这句话的意思是指设定一个泛型类型T。接下来就直接可以将T作为一个参数类型使用了。

    int *result = My_find<int>(a,10,3);

    这是泛型函数的调用方法。尖括号指定函数泛型的具体类型,然后传入参数。

    模版类怎么写?

    除了泛型函数,最重要的就是泛型类也就是模版类了。

    #include<iostream>
    using namespace std;
    
    template<class T>
    class Operate{
    	public:
    	static T add(T a,T b){
    		return a+b;
    	}
    	static T Mul(T a,T b){
    		return a*b;
    	}
    	static T Judge(T a,T b=1){
    		if(a>=0)
    		return a;
    		else
    		return a/b;
    	}
    };
    int main(){
    	int a,b,c,d,e,x,y,z;
    	a=1,b=2,c=3,d=4,e=5;
    	x=Operate<int>::add(a,b);
    	y=Operate<int>::Mul(c,d);
    	z=Operate<int>::Judge(e,b);
    	cout<<x<<" "<<y<<" "<<z<<" "<<endl;
    	return 0;
    }
    

    上面这个例子是一个模版类的实现。

    template<class T>

    这句话定义了一个模版类类型。

    x=Operate<int>::add(a,b);
    y=Operate<int>::Mul(c,d);
    z=Operate<int>::Judge(e,b);

    调用使用了模版类的方法时,也是用尖括号指定模版类的具体实现类。

    以上就是C++泛型函数及模版类的基本使用方法。

    泛型编程广泛的应用于STL标准模版库中,深入学习STL,当然要掌握好泛型编程。

  • 相关阅读:
    常见搜索召回方式
    阿里Tree-based Deep Match(TDM) 学习笔记
    阻塞、非阻塞、同步、异步的理解
    最佳实践:深度学习用于自然语言处理(Deep Learning for NLP Best Practices)
    ELK日志分析工具
    mysql性能测试--sysbench实践
    mysql性能测试-tpcc
    mysql基础测试
    压力测试sysbench
    压力测试工具MySQL mysqlslap
  • 原文地址:https://www.cnblogs.com/study-development/p/4215687.html
Copyright © 2020-2023  润新知