Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengisih Berbilang Vektor Berdasarkan Nilai Vektor Tunggal?

Bagaimana Mengisih Berbilang Vektor Berdasarkan Nilai Vektor Tunggal?

Susan Sarandon
Lepaskan: 2024-12-29 20:04:14
asal
681 orang telah melayarinya

How to Sort Multiple Vectors Based on the Values of a Single Vector?

Isih Vektor Berdasarkan Nilai daripada Vektor Berbeza

Pertimbangkan senario di mana anda mempunyai berbilang vektor yang sama panjang dan anda mahu susun satu vektor mengikut susunan tertentu sambil menggunakan pilih atur yang sama kepada vektor lain. Ini menimbulkan cabaran tentang cara memanfaatkan corak pengisihan ini merentas berbilang vektor.

Penyelesaian

Untuk mengisih vektor mengikut nilai daripada vektor yang berbeza, anda boleh menggunakan tersuai menyusun dan menggunakan vektor yang menggandingkan setiap indeks elemen dengan nilai yang sepadan dalam vektor pengisihan.

typedef vector<int>::const_iterator myiter;

vector<pair<size_t, myiter>> order(Index.size());

size_t n = 0;
for (myiter it = Index.begin(); it != Index.end(); ++it, ++n)
    order[n] = make_pair(n, it);

struct ordering {
    bool operator ()(pair<size_t, myiter> const& a, pair<size_t, myiter> const& b) {
        return *(a.second) < *(b.second);
    }
};

sort(order.begin(), order.end(), ordering());
Salin selepas log masuk

Sebaik sahaja anda mempunyai susunan yang diisih, anda boleh menggunakan ini sebagai jadual carian untuk indeks baharu setiap elemen dalam vektor lain.

template <typename T>
vector<T> sort_from_ref(
    vector<T> const& in,
    vector<pair<size_t, myiter>> const& reference
) {
    vector<T> ret(in.size());

    size_t const size = in.size();
    for (size_t i = 0; i < size; ++i)
        ret[i] = in[reference[i].first];

    return ret;
}
Salin selepas log masuk

Dengan menggunakan proses ini, anda boleh mengisih vektor sasaran dengan berkesan dan menggunakan transformasi yang sama kepada elemen yang sepadan dalam vektor lain.

Atas ialah kandungan terperinci Bagaimana Mengisih Berbilang Vektor Berdasarkan Nilai Vektor Tunggal?. 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