使用字符串和整数对对向量进行排序
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());
大家好,
我正在尝试根据pair
的second
元素对vector
进行排序。如果这对的second
元素相等,那么我比较pair
的first
元素。
我正在使用上面的代码对包含string
和int
pair
的vector
进行排序。我正在使用sort_heap(vector.begin(),vector.end(),cmp);
调用排序函数。但这似乎没有按预期工作。
【问题讨论】:
谢谢。会这样做。我是堆栈溢出的新手 【参考方案1】:只需使用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;
strcmp 如果第一个“小于”第二个(这就是您所关心的)返回负数,如果它们相等则返回 0,如果第二个小于第一个则返回正数。所以,如果你想使用 strcmp,你可以这样做:
return strcmp(p1.first.c_str(), p2.first.c_str()) < 0;
但我不明白你为什么要这样做。
【讨论】:
以上是关于使用字符串和整数对对向量进行排序的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用str_order函数和str_sort函数对字符向量进行排序(str_order返回字符串排序的次序值(索引)str_sort返回排序后的字符串)