关于STL中地图数据拷贝到vector中排序有关问题

关于STL中map数据拷贝到vector中排序问题
本帖最后由 xiaoheng1991 于 2014-06-10 14:41:41 编辑
在下最近在写代码时候遇到了一个问题,代码如下:


bool cmpByProb(pair<string,DataHolder> &x, pair<string,DataHolder> &y){
  return x.second.num<y.second.num;
}

//DataHolder是一个自定义类
//data是一个map<string,DataHolder>类型
vector< pair<string,DataHolder> > vData(data.begin(),data.end());
sort(vData.begin(),vData.end(),cmpByProb);


然后就编译不成功,sort那一句总是出现:

invalid initialization of reference of type 'std::pair<std::basic_string<char>, DataHolder>&' from expression of type 'const std::pair<std::basic_string<char>, DataHolder>'

这样的错误,意思是我里面的pair是const类型的,我貌似也没有在vector里面定义const类型的吧,这个该怎么写呢,我就是想利用vector对map按照值进行排序而已,怎么这么难啊,这个问题纠结好久了,还望大侠们给予指导。在下不剩感激啊,~~~
------解决方案--------------------

bool cmpByProb(pair<string,DataHolder> &x, pair<string,DataHolder> &y){
  return x.second.num<y.second.num;
}

改成
bool cmpByProb(const pair<string,DataHolder> &x, const pair<string,DataHolder> &y){
  return x.second.num<y.second.num;
}

试试