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

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

Susan Sarandon
Susan Sarandon原創
2024-12-10 21:48:14626瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn