码迷,mamicode.com
首页 > 编程语言 > 详细

c++模板的一些语法

时间:2014-08-18 23:35:23      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:模板   c++   特化   

函数模板的特化

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 (&para)[N])
{
	int i=0;
	for(i=0;i<N;i++)
		cout<<para[i]<<endl;
};


c++模板的一些语法,布布扣,bubuko.com

c++模板的一些语法

标签:模板   c++   特化   

原文地址:http://blog.csdn.net/u011608357/article/details/38668779

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!