使用字符串和整数对对向量进行排序

Posted

技术标签:

【中文标题】使用字符串和整数对对向量进行排序【英文标题】: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); 调用排序函数。但这似乎没有按预期工作。

【问题讨论】:

谢谢。会这样做。我是堆栈溢出的新手 【参考方案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;

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

【讨论】:

以上是关于使用字符串和整数对对向量进行排序的主要内容,如果未能解决你的问题,请参考以下文章

根据关联的整数向量对字符串向量进行排序[重复]

使用整数向量的向量对整数向量进行基数排序

R语言使用str_order函数和str_sort函数对字符向量进行排序(str_order返回字符串排序的次序值(索引)str_sort返回排序后的字符串)

分段错误:C++ 使用 lambda 比较器对字符串向量进行排序

有没有一种方法可以使用排序将向量与字符串序列进行比较?

对包含语义版本的字符向量进行排序