您的位置:首页 > 编程语言 > C语言/C++

c++一些语法模板

2015-07-05 20:15 411 查看
函数模板特

template <class T>
int compare(T v1,T v2)
{
if(v1<v2)
return -1;
else if(v1>v2)
return 1;
else
return 0;
}

template <>
int compare<char *>(char * s1,char * s2)
{
return strcmp(s1,s2);
}


类模板的特化

template <class T>
class test
{
public:
void operator()()
{
cout<<"test<T>"<<endl;
}
};

template <>  class test<char>
{
public:
void operator()()
{
cout<<"test<char>"<<endl;
}
};
模板的偏特化

template <class T,class O>
struct testClass
{
testClass(){cout<<"I,O"<<endl;}
};

template <class T>
struct testClass<T *,T *>
{
testClass(){cout<<"T*,T*"<<endl;}
};
成员模板

template <class T>
class v
{
public:
template <class T1>
void insert(int position ,T1 t)
{
cout<<"insertion"<<endl;
}
};

依据前面一个模板确定当前的模板參数

template <class T,class S=vector<T> >
class test
{
public:
test(){cout<<"test"<<endl;}
private:
S t;
}

模板与友元的绑定

template <class T>
class Queue
{
friend bool operator == <T> (const Queue <T> &t1,const Queue <T> &t2)
{
cout<<"T,T"<<endl;
return true;
}
};

内联函数模板

inline template <typename T> T min(const T& a,const T & b)
{
return a<b?a:b;
}
注意inline 和template的位置不能互换

模板内部指定类型

template <class T>
class test
{
public:
typename T::size_type t;   //模板内部定义类型
};

非类型模板形參

template <class T,size_t N>
void arr(T (¶)
)
{
int i=0;
for(i=0;i<N;i++)
cout<<para[i]<<endl;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: