ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【C++】模板的使用

2022-07-21 13:35:39  阅读:140  来源: 互联网

标签:temp int void j1 C++ job Swap 使用 模板


#include <iostream>

using namespace std;

struct job
{
    char name[40];
    double salary;
    int floor;
};
void show(job &j);

template <typename T>
void Swap(T &a,T &b);
const int LIM = 8;
void show(int arr[],int n);

template <typename T>
void Swap(T a[],T b[],int n);

template <> void Swap<job>(job &j1,job &j2);

void Swap(int a,int b);

int main()
{

    int i = 10;
    int j = 20;

    cout <<"i,j = " << i << "," << j << "." <<endl;
    Swap(i,j);
    cout <<"After Swap,now i,j = " << "i,j = " << i << "," << j << "." <<endl;

    double x = 24.5;
    double y = 81.7;
    cout << "x,y = " << x << "," << y << "." << endl;
    Swap(x,y);
    cout <<"After Swap,now x,y = " << "x,y = " << x << "," << y << "." <<endl;

    int d1[LIM] = {0,7,0,4,1,7,7,6};
    int d2[LIM] = {0,7,2,0,1,9,6,9};
    cout << "Origianl arrays: " << endl;
    show(d1,LIM);
    show(d2,LIM);
    Swap(d1,d2,LIM);
    cout << "Swapped arrays: " << endl;
    show(d1,LIM);
    show(d2,LIM);


    job Rick = {"Rick",1000,10};
    job Jack = {"Jack",1100,11};
    show(Rick);
    show(Jack);
    Swap(Rick,Jack);
    cout << "After swap: " << endl;
    show(Rick);
    show(Jack);
    return 0;
}

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

template <typename T>
void Swap(T a[],T b[],int n)
{
    T temp;
    for(int i = 0; i < n; i++)
    {
        temp = a[i];
        a[i] = b[i];
        b[i] = temp;
    }
}

//显示具体化模板,只有形参为job结构体,才发挥作用 template <> void Swap<job>(job &j1,job &j2) { double t1; double t2; t1 = j1.salary; j1.salary = j2.salary; j2.salary = t1; t2 = j1.floor; j1.floor = j2.floor; j2.floor = t2; } void Swap(int a,int b) { int temp; temp = a; a = b; b = temp; cout << "this is function not template,a=" << a << ",b=" << b << endl; } //普通函数优先级高于显示模板,高于普通模板,相同参数,优先匹配普通函数 void show(int arr[],int n) { for(int i=0;i < n;i++) { cout << arr[i] <<" "; } cout << endl; } void show(job &j) { cout << j.name << ": " << j.salary <<"on floor" << j.floor << endl; }

 

标签:temp,int,void,j1,C++,job,Swap,使用,模板
来源: https://www.cnblogs.com/powercool/p/16501562.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有