当前位置:编程学习 > C/C++ >>

练习c++ 函数模版例子

[cpp]
//函数模版使用 
//函数模版标准不支持参数默认值 
#include<iostream> 
#include<cstring> 
using namespace std; 
template <typename T> 
void sort(T* a,int n)//普通冒泡排序 

    bool changed; 
    do 
    { 
        changed=false; 
        for(int i=1;i<n;i++) 
        { 
            if(a[i]<a[i-1]) 
            { 
                swap(a[i],a[i-1]); 
                changed=true; 
            } 
        } 
        --n; 
    } 
    while(changed); 

template <>//模版特化 
void sort(const char* a[],int n)//普通冒泡排序 

    bool changed; 
    do 
    { 
        changed=false; 
        for(int i=1;i<n;i++) 
        { 
            if(strcmp(a[i],a[i-1])<0) 
            { 
                swap(a[i],a[i-1]); 
                changed=true; 
            } 
        } 
        --n; 
    } 
    while(changed); 

//template <typename T> 
//void show(T t[],int n) 
template <typename T,int n> 
void show(T(&t)[n]) 

    //int n=sizeof(t)/sizeof(t[0]);//算出t的个数 
    for(int i=0;i<n;i++) 
        cout<<t[i]<<' '; 
    cout<<endl; 

template <typename T> 
void show(T t) 

        cout<<t<<endl; 

int main() 

    int a[5]={6,7,8,3,2}; 
     
    sort(a,5);//函数模版会自动匹配,不需要显式指定类型 
    show(a); 
    double d=12.345; 
    show(d); 
    char c[5]={'b','f','k','d','a'}; 
    sort(c,5); 
    show(c); 
    const char* ca[3]={"fc","ca","ab"}; 
    sort(ca,3); 
    show(ca); 
    return 0; 

 

 

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,