簡體   English   中英

用字符串和整數對排序矢量

[英]Sort Vector with string and int pair

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

大家好,

我正在嘗試根據對的second元素pair vector進行排序。 如果second對對元素相等,那么我比較first所述的元件pair

我正在使用上面的代碼對包含stringint pairvector進行排序。 我正在使用sort_heap(vector.begin(),vector.end(),cmp);調用排序函數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;
}

strcmp返回一個負數,如果第一個是“小於”第二個(這就是你所關心的),如果它們相等則返回0,如果第二個小於第一個,則返回正數。 所以,如果你想使用strcmp,你會這樣做:

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

但我不明白為什么你會這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM