64,651
社区成员
发帖
与我相关
我的任务
分享
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);
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>'
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;
}
试试
typedef struct hc_MediaFolder
{
std::string s_strFolderPid;
std::string s_strFolderTitle;
std::string s_strFolderCount;
std::string s_strFoldersTotal;
hc_MediaFolder()
{
s_strFolderPid.clear();
s_strFolderTitle.clear();
s_strFolderCount.clear();
s_strFoldersTotal.clear();
}
~hc_MediaFolder(){}
hc_MediaFolder(const hc_MediaFolder& rmf )
{
s_strFolderPid = rmf.s_strFolderPid;
s_strFolderTitle = rmf.s_strFolderTitle;
s_strFolderCount = rmf.s_strFolderCount;
s_strFoldersTotal = rmf.s_strFoldersTotal;
}
bool operator< (const hc_MediaFolder& rmf) const
{
return s_strFolderTitle < rmf.s_strFolderTitle;
}
bool operator> (const hc_MediaFolder& rmf) const
{
return s_strFolderTitle > rmf.s_strFolderTitle;
}
} MediaFolder;
typedef std::vector<MediaFolder> VecMediaFolders;
VecMediaFolders mVecMediaFolders;
std::sort(mVecMediaFolders.begin(),mVecMediaFolders.end());
使用sort需要类型实现了比较运算。没注意看pair有没有实现。
实在不行楼主可以仿上面代码写一个结构试下。