Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Isih Vektor dalam C Sambil Mengekalkan Indeks Asal?
Isih dengan Pemeliharaan Indeks dalam C
Dalam bidang manipulasi data, pengisihan ialah operasi asas yang menyusun elemen ke dalam susunan yang diingini. Walaupun algoritma pengisihan sememangnya mengekalkan susunan elemen yang sama, adalah wajar untuk menjejaki indeks asal unsur yang diisih untuk mengekalkan konteks asalnya.
Satu pendekatan untuk masalah ini ialah menggunakan fungsi lambda dalam C 11. Lambda ialah fungsi tanpa nama yang boleh menangkap pembolehubah daripada skop sekelilingnya. Ini membolehkan operasi pengisihan ringkas dan fleksibel yang boleh mengakses data luaran.
Berikut ialah fungsi sort_indexes tersuai yang menggabungkan lambda dengan algoritma stable_sort perpustakaan standard:
#include <vector> #include <algorithm> using namespace std; template <typename T> vector<size_t> sort_indexes(const vector<T> &v) { // Initialize original indexes vector<size_t> idx(v.size()); iota(idx.begin(), idx.end(), 0); // Sort indexes based on values in v stable_sort(idx.begin(), idx.end(), [&](size_t i1, size_t i2) { return v[i1] < v[i2]; }); return idx; }
Dalam fungsi ini, kita mula-mula mulakan idx vektor dengan indeks asal vektor input v. Kemudian, kami menggunakan stable_sort untuk mengisih indeks berdasarkan pembanding lambda yang membandingkan nilai dalam v. Penggunaan stable_sort memastikan elemen dengan nilai yang sama mengekalkan susunan asalnya dalam hasil yang diisih.
Untuk menggunakan fungsi ini, hanya hantar vektor elemen sebagai hujah dan ia akan mengembalikan vektor indeks yang diisih. Contohnya, diberi vektor [5, 2, 1, 4, 3], idx vektor yang dikembalikan ialah [1, 2, 4, 3, 0].
Teknik ini membolehkan anda mengisih elemen semasa mengekalkan indeks asalnya, memberikan fleksibiliti dalam tugas pemprosesan data seterusnya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Vektor dalam C Sambil Mengekalkan Indeks Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!