首頁 > 後端開發 > C++ > 如何在 C 中依照第二個元素對向量對進行排序?

如何在 C 中依照第二個元素對向量對進行排序?

Susan Sarandon
發布: 2024-12-10 21:48:14
原創
555 人瀏覽過

How to Sort Vectors of Pairs Based on Their Second Elements in C  ?

根據第二個元素對向量對向量對進行排序

給定一個向量對,人們可能希望根據它們的升序排列它們第二個要素。在建構自訂函數物件完成此任務的同時,讓我們探討一下標準範本庫 (STL) 是否為我們提供了更方便的方法。

使用自訂比較器

第三種std::sort 的參數允許指定自訂比較器函數。我們可以如下定義:

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());
登入後複製

在C 11 及以上版本中使用Lambda

在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;
});
登入後複製

利用模板靈活性

為了提高可重用性,可以定義一個基於模板的比較器:

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板