【C++】56 函数模板的概念与意义template关键字 泛型编程

算法吟游者
• 阅读 91

c++中有几种交换变量的方法

#include <iostream>
#include <string>
using namespace std;
void Swap(int& a,int& b)
{
    int c = a;
    a = b;
    b = c;
}
void Swap(double& a,double& b)
{
    double c = a;
    a = b;
    b = c;
}
void Swap(string& a,string& b)
{
    string c = a;
    a = b;
    b = c;
}

int main()

{
    int a = 0;
    int b = 1;
    Swap(a,b);
    cout << "a = "<< a << endl;
    cout << "b = "<< b << endl;
    double m = 2;
    double n = 3;
    Swap(m,n);
    cout << "m = "<< m << endl;
    cout << "n = "<< n << endl;
    string d = "yingli";
    string t = "zhang";
     Swap(d,t);
    cout << "d = "<< d << endl;
    cout << "t = "<< t << endl;

    return 0;

}

输出:

a = 1
b = 0
m = 3
n = 2
d = zhang
t = yingli

【C++】56 函数模板的概念与意义template关键字 泛型编程

泛型编程

泛型编程的概念

不考虑数据类型的编程方式
【C++】56 函数模板的概念与意义template关键字 泛型编程

函数模板

C++中的泛型编程

函数模板

一种特殊的函数可用不同类型进行调用

看起来和普通函数很相似,区别是类型可被参数化

函数模板的语法规则

template关键字用于生命开始进行泛型编程

typename关键字用于声明泛指类型

【C++】56 函数模板的概念与意义template关键字 泛型编程
【C++】56 函数模板的概念与意义template关键字 泛型编程
【C++】56 函数模板的概念与意义template关键字 泛型编程

#include <iostream>

#include <string>



using namespace std;


template <typename T>

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


int main()

{
    int a = 0;
    int b = 1;


    Swap(a,b);
    cout << "a = "<< a << endl;
    cout << "b = "<< b << endl;
    double m = 2;
    double n = 3;
    Swap(m,n);
    cout << "m = "<< m << endl;
    cout << "n = "<< n << endl;
    string d = "yingli";
    string t = "zhang";
     Swap(d,t);
    cout << "d = "<< d << endl;
    cout << "t = "<< t << endl;

    return 0;

}



输出:

5, 3, 2, 4, 1, 
1, 2, 3, 4, 5, 
Java, C++, Pascal, Ruby, Basic, 
Basic, C++, Java, Pascal, Ruby, 
a = 1
b = 0
m = 3
n = 2
d = zhang
t = yingli

例子:

#include <iostream>
#include <string>

using namespace std;

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

template < typename T >
void Sort(T a[], int len)
{
    for(int i=0; i<len; i++)
    {
        for(int j=i; j<len; j++)
        {
            if( a[i] > a[j] )
            {
                Swap(a[i], a[j]);
            }
        }
    }
}

template < typename T >
void Println(T a[], int len)
{
    for(int i=0; i<len; i++)
    {
        cout << a[i] << ", ";
    }
    
    cout << endl;
}

int main()
{
    int a[5] = {5, 3, 2, 4, 1};
    
    Println(a, 5);
    Sort(a, 5);
    Println(a, 5);
    
    string s[5] = {"Java", "C++", "Pascal", "Ruby", "Basic"};
    
    Println(s, 5);
    Sort(s, 5);
    Println(s, 5);
    
    return 0;
}

小结:
【C++】56 函数模板的概念与意义template关键字 泛型编程

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Easter79 Easter79
4年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Wesley13 Wesley13
4年前
java 泛型详解
对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java泛型详解、Java中的泛型方法、java泛型详解1\.概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟
我丢,去面试初级Java开发岗位,被问到泛型?
1、泛型的基础概念1.1为什么需要泛型cListlistnewArrayList();//默认类型是Objectlist.add("A123");list.add("B234");list.add("C345");System.out.println(list);
浪人 浪人
4年前
java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一
java泛型详解绝对是对泛型方法讲解最详细的,没有之一对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考、、1、概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?
桃浪十七丶 桃浪十七丶
4年前
C++写一个简单排序算法
分析算法步骤:1、暂定元素排列第0个为最小值,下标为min;2、然后从左往右依次扫描,与min的关键字比较,若比min的更小,则更新min下标为当前下标;3、并且把先前的最小值与当前找到目标的元素交换位置。cinclude<iostreamusingnamespacestd;voidSwap(int&a,int&b)inttem
Wesley13 Wesley13
4年前
HTTP面试题(二):HTTP请求报文和响应报文格式
!(https://oscimg.oschina.net/oscnet/0406894fb1274bee91fc53c84c516576.jpg)看都看了还不点个赞!(https://oscimg.oschina.net/oscnet/095d444dc9a449ee85afd19b00fdf52b.png)!(h
Easter79 Easter79
4年前
Thinking in java Chapter15 泛型
1与C比较2简单泛型泛型类3泛型接口4泛型方法5匿名内部类6构建复杂模型78910“泛型”意思就是:适用于许多许多的类型<h2id"1"1与C比较</h2C
Wesley13 Wesley13
4年前
C++:模板类
22.模板类22.1模板类模板是泛型编程的基础,那什么是泛型编程呢?泛型编程是一种独立于任何特定数据类型编写代码的方式。C标准模板库中的数据容器、迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。比如动态数组vector是可以存放任何类型数据的容器,我们可以定义许多不同类型的vector,比如vector<int或vect
Wesley13 Wesley13
4年前
C++ 模板基础
我们学习使用C,肯定都要了解模板这个概念。就我自己的理解,模板其实就是为复用而生,模板就是实现代码复用机制的一种工具,它可以实现类型参数化,即把类型定义为参数;进而实现了真正的代码可重用性。模版可以分为两类:一个是函数模版,另外一个是类模版。举个最简单的例子,当在编写好了一个进行int型交换的swap函数,而此后若又要进行double型交换,那就得重
小万哥 小万哥
2年前
C++模板和泛型编程详解
C中的模板和泛型编程是非常重要的概念。模板是一种将数据类型作为参数的通用程序设计方法。它们允许开发人员编写可以处理各种数据类型的代码,而无需为每种数据类型编写不同的代码。下面介绍了一些关于C中模板和泛型编程的重要知识点模板的定义模板是一种通用程序设