Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengisih Vektor Pasangan Berdasarkan Elemen Keduanya dalam C ?

Bagaimana Mengisih Vektor Pasangan Berdasarkan Elemen Keduanya dalam C ?

Susan Sarandon
Lepaskan: 2024-12-10 21:48:14
asal
557 orang telah melayarinya

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

Mengisih Vektor Pasangan Berdasarkan Elemen Kedua

Memandangkan vektor pasangan, seseorang mungkin ingin menyusunnya dalam tertib menaik berdasarkan mereka elemen kedua. Semasa membina objek fungsi tersuai menyelesaikan tugas ini, mari kita terokai sama ada Perpustakaan Templat Standard (STL) memperkasakan kita dengan kaedah yang lebih mudah.

Menggunakan Pembanding Tersuai

Yang ketiga parameter std::sort membenarkan fungsi pembanding tersuai ditentukan. Kita boleh mentakrifkannya seperti berikut:

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());
Salin selepas log masuk

Menggunakan Lambdas dalam C 11 dan Ke Atas

Dalam versi C 11 dan yang lebih baru, lambdas menawarkan alternatif yang padat:

std::sort(v.begin(), v.end(), [](const std::pair<int, int>& left, const std::pair<int, int>& right) {
    return left.second < right.second;
});
Salin selepas log masuk

Memanfaatkan Templat untuk Fleksibiliti

Untuk meningkatkan kebolehgunaan semula, seseorang boleh menentukan pembanding berasaskan templat:

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);
    }
};
Salin selepas log masuk

Ini membolehkan fleksibiliti yang lebih besar:

std::sort(v.begin(), v.end(), sort_pair_second<int, int>());
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Mengisih Vektor Pasangan Berdasarkan Elemen Keduanya dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan