关于STL中地图数据拷贝到vector中排序有关问题
关于STL中map数据拷贝到vector中排序问题
在下最近在写代码时候遇到了一个问题,代码如下:
然后就编译不成功,sort那一句总是出现:
这样的错误,意思是我里面的pair是const类型的,我貌似也没有在vector里面定义const类型的吧,这个该怎么写呢,我就是想利用vector对map按照值进行排序而已,怎么这么难啊,这个问题纠结好久了,还望大侠们给予指导。在下不剩感激啊,~~~
------解决方案--------------------
把
改成
试试
在下最近在写代码时候遇到了一个问题,代码如下:
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;
}
试试