关于greater<int>以及类模板的一些理解

类模板和模板类有什么区别

1. 以greater类模板为例

template<class T>
struct greater: public binary function<T, T, bool>
{
	bool operator()(const T& x, const T& y) const
	{	
		return x > y;
	}
};

我们可以看到,greater原型如上,则单拿出greater来说,规定其为类模板。如果我们写greater<int>或者greater<double>或者单精度浮点型之类的基本数据类型,我们就将其称之为模板类。

利用这个类我们可以降序排列一个数据容器,省得我们自己去写compare函数了。不过需要注意的是,由于是利用类内重载()运算符作为类模板,从而定义模板类,最后借以定义函数对象作为函数使用,所以greater是不完全等同于函数的。它只是一个类。

因此我们在用sort函数进行排序时,如果想要调用greater等类模板,(原型:void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp))我们需要新建一个临时对象。
如下:

sort<a, a + size, compare>;
或者
sort<a, a + size, greater<int>()>;	//降序排列

值得注意的是,我们需要在开头include<functional>

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值