首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

sort函数//IntegerComparator()这个括号运算符不是有俩个参数吗?为啥不需要传参数呀?

2013-03-16 
sort函数//IntegerComparator()这个括号运算符不是有俩个参数吗?为什么不需要传参数呀???#includealgorit

sort函数//IntegerComparator()这个括号运算符不是有俩个参数吗?为什么不需要传参数呀???


#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
class Integer
{
public:
  Integer(void):m_nValue(100)
  {
    cout<<"Integer::Integer()invoked"<<endl;
  }
  Integer(int nValue):m_nValue(nValue){}
  Integer(const Integer& intOther):m_nValue(intOther.m_nValue)
  {
    cout<<"Integer(Integer)"<<endl;
  }
  Integer& operator=(const Integer& intOther)
  {
    cout<<"Integer::operator"<<endl;
    if(&intOther!=this)
m_nValue=intOther.m_nValue;
    return*this;
  }
/*  bool operator<(const Integer&intRight)const
  {
    return m_nValue<intRight.m_nValue;
  }*/
  int m_nValue;
};
class IntegerComparator
{
public:
  bool operator()(const Integer& intLeft,const Integer&intRight)
  {
    return intLeft.m_nValue<intRight.m_nValue;
  }
};
int main()
{
  vector<Integer>vi1(3);
  vector<Integer>vi2;
  vi2.push_back(Integer(2));
  vi2[0]=Integer(3);
  vi2.resize(4);
  vi2[1]=Integer(12);
  vi2[2]=Integer(2);
  vi2[3]=Integer(58);

  sort(vi2.begin(),vi2.end(),IntegerComparator());
  
  return 0;
}


[解决办法]
sort内部来决定调用哪两个做参数来比较
[解决办法]
IntegerComparator()这是调用构造函数啊,构造匿名对象.
sort内部才会用到
bool IntegerComparator::operator()(const Integer& intLeft,const Integer&intRight)

热点排行