首頁 > 後端開發 > C++ > 如何根據 C 中的第二個元素對向量對進行自訂排序?

如何根據 C 中的第二個元素對向量對進行自訂排序?

DDD
發布: 2024-12-13 12:12:10
原創
516 人瀏覽過

How to Custom Sort a Vector of Pairs Based on the Second Element in C  ?

對向量的自訂排序

考慮要對向量對進行排序的場景(

std::向量<std: :pair int>></std:>
登入後複製
)基於每對中的第二個元素按升序排列。

要在不實現單獨的函數物件的情況下實現此目的,您可以利用

std::sort
登入後複製
的第三個參數,它接受自訂比較器。此比較器使用提供的比較器根據第二個元素比較兩對。

例如,使用 C 11 編譯器,您可以使用 lambda 表達式定義比較器:

std::sort(v.begin(), v.end(), [](const std::pair<int,int> &left, const std::pair<int,int> &right) {
    return left.second < right.second;
});
登入後複製

或者,定義一個重載

operator()
登入後複製
的自訂結構體函數來執行比較:
struct sort_pred {
    bool operator()(const std::pair<int,int>& left, const std::pair<int,int>& right) {
        return left.second < right.second;
    }
};

std::sort(v.begin(), v.end(), sort_pred());
登入後複製

如果您想要一個可以與不同類型和比較器重用的通用解決方案,請建立一個如下範本:

template <class T1, class T2, class Pred = std::less<T2>>
struct sort_pair_second {
    bool operator()(const std::pair<T1,T2>& left, const std::pair<T1,T2>& right) {
        Pred p;
        return p(left.second, right.second);
    }
};
登入後複製

使用此模板,您可以使用任何自訂比較器對對進行排序:

std::sort(v.begin(), v.end(), sort_pair_second<int, int>());
登入後複製

以上是如何根據 C 中的第二個元素對向量對進行自訂排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板