初学者的一个关于模板的问题!
Roy T 2006-08-10 09:37:01
在C语言中,如果函数A中对于数据元素有未知的操作可以采用一个函数指针p作为函数A的参数, 这个p可以在A中对数据元所作操作。举一个简单的例子,要对一个线性表list 做冒泡排序操作,而数据元素是一个struct,两个元素之间的大小需要一个特定的函数来断定。
sort( list, int *(cmp)(ElemType, ElemType) ) {//cmp(a, b)>0时a大,<0时b大,==0时相等。
//....
//比较和交换部分如下
if( cmp(a, b) > 0 ) {
temp = list.at(x);
list.at(x) = list.at(y);
list.at(y) = temp;
}
}
今天我在MSDN里看到了C++有另外的办法
template<class Traits> void sort(Traits _Comp);
在主函数里这样用就可以了
list.sort( greater<ElemType>() );
请问这样的sort()函数是怎么定义的?它对所在的木板有什么要求?
谢谢高手讲解。