【问题标题】:Sort Vector with string and int pair使用字符串和整数对对向量进行排序
【发布时间】:2012-08-11 18:43:04
【问题描述】:

cmp

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()); }

大家好,

我正在尝试根据pairsecond 元素对vector 进行排序。如果这对的second 元素相等,那么我比较pairfirst 元素。

我正在使用上面的代码对包含stringint pairvector 进行排序。我正在使用sort_heap(vector.begin(),vector.end(),cmp); 调用排序函数。但这似乎没有按预期工作。

【问题讨论】:

  • 谢谢。会这样做。我是堆栈溢出的新手

标签: c++ stl


【解决方案1】:

只需使用operator&lt; 作为字符串:

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;
}

strcmp 如果第一个“小于”第二个(这就是您所关心的)返回负数,如果它们相等则返回 0,如果第二个小于第一个则返回正数。所以,如果你想使用 strcmp,你可以这样做:

return strcmp(p1.first.c_str(), p2.first.c_str()) < 0;

但我不明白你为什么要这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    相关资源
    最近更新 更多