Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menyusun Vektor Pasangan Berdasarkan Elemen Kedua dalam C ?

Bagaimanakah Saya Boleh Menyusun Vektor Pasangan Berdasarkan Elemen Kedua dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-12-10 22:35:11
asal
655 orang telah melayarinya

How Can I Sort a Vector of Pairs Based on the Second Element in C  ?

Mengisih Vektor Pasangan Menggunakan Elemen Kedua

Mengisih vektor pasangan berdasarkan elemen kedua ialah tugas pengaturcaraan biasa. Artikel ini meneroka pelbagai kaedah untuk mencapai ini menggunakan komponen STL sedia ada dan std::less.

Kaedah 1: Pembanding Tersuai

Pembanding tersuai ialah pendekatan biasa. Cipta struct dengan fungsi operator() overridden yang membandingkan pasangan berdasarkan elemen kedua mereka. Contohnya:

struct sort_pred {
    bool operator()(const std::pair<int, int>& left, const std::pair<int, int>& right) {
        return left.second < right.second;
    }
};
Salin selepas log masuk

Kemudian, panggil sort() dengan pembanding ini sebagai hujah ketiga:

std::sort(vec.begin(), vec.end(), sort_pred());
Salin selepas log masuk

Kaedah 2: Ungkapan Lambda (C 11)

Dalam C 11, anda boleh menggunakan ungkapan lambda untuk menentukan perbandingan fungsi:

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

Kaedah 3: Pembanding Berasaskan Templat Generik (C 11)

Untuk kod boleh guna semula, buat pembanding berasaskan templat generik:

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

Kemudian, panggil sort() dengan berasaskan templat ini pembanding:

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

Pengesyoran

Untuk kebolehgunaan semula, pembanding berasaskan templat generik ialah pilihan yang berkuasa. Walau bagaimanapun, untuk memudahkan, menulis pembanding tersuai atau ungkapan lambda selalunya mencukupi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Vektor Pasangan Berdasarkan Elemen Kedua 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