bool cmp(const pair<string, long> &p1, const pair<string, long> &p2){
if(p1.second!=p2.second)
return p1.second < p2.second;
return strcmp(p1.first.c_str(),p2.first.c_str());
}
大家好,
我正在尝试vector根据second元素进行排序pair.如果该second对的元素相等,那么我比较的first元素pair.
我正在使用上面的代码来排序vector包含string和int pair.我正在使用调用排序功能sort_heap(vector.begin(),vector.end(),cmp);.但这似乎没有按预期工作.
只需operator<用于字符串:
bool cmp(const pair<string, long> &p1, const pair<string, long> &p2)
{
if(p1.second!=p2.second)
return p1.second < p2.second;
return p1.first < p2.first;
}
Run Code Online (Sandbox Code Playgroud)
strcmp返回一个负数,如果第一个是"小于"第二个(这就是你所关心的),如果它们相等则返回0,如果第二个小于第一个,则返回正数.所以,如果你想使用strcmp,你会这样做:
return strcmp(p1.first.c_str(), p2.first.c_str()) < 0;
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么你会这样做.
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |