sort的用法被搞昏头了
sort函数混淆了 以下是两种菜鸟知道的用法:bool GreatNumber(const int n1,const int n2){ if(n1==n2)return false; else return n1>n2?true:false;}int main(){ int const n=20; int a[n]={1000,1000,7899,1,9,-23};//sort(a, a+n,GreatNumber); sort(a,a+n, less<int>());copy(a,a+n, ostream_iterator<int>(cout," "));return 0;}sort(a, a+n,GreatNumber);sort(a,a+n, less<int>());第一种,函数的第三个参数是一个函数,函数名在表达式中会隐士转换为函数指针。第二种:less这个类模板,构建了一个临时对象,然后去调用less 这个类模板中的bool operator()const 函数,这是我猜测的。真是奇怪,就算函数指针作为函数参数,那么为什么类模板构建的临时对象也能调用到内部的operator()呢??再比如:第三个问题: class PersonCompare{public: //其中的Person是一个类,不用管它。 bool operator()(Person const&p1, Person const& p2) { return ( p1.GetfirstName()<p2.GetfirstName() ) || ( !(p2.GetlastName()<p1.GetlastName() ) && (p1.GetfirstName()<p2.GetfirstName()) ) ; }}; set<Person,PersonCompare>coll;又如何调用了PersonCompare 中的operator()呢??