Isih dengan Penjejakan Indeks dalam C
Mengisih data sambil mengekalkan indeks asal ialah tugas biasa dalam analisis dan manipulasi data. Dalam C , untuk mencapai ini memerlukan beberapa teknik pengaturcaraan yang bijak.
Untuk mengisih jujukan sampel dalam tertib menaik sambil menjejaki indeks asalnya, seseorang boleh menggunakan ungkapan lambda dan perpustakaan standard. Fungsi sort_indexes di bawah menunjukkan pendekatan ini:
template <typename T> vector<size_t> sort_indexes(const vector<T> &v) { // Initialize original index locations vector<size_t> idx(v.size()); iota(idx.begin(), idx.end(), 0); // Sort indexes based on values in v using std::stable_sort to maintain original order for equal values stable_sort(idx.begin(), idx.end(), [&v](size_t i1, size_t i2) { return v[i1] < v[i2]; }); return idx; }
Fungsi ini mengembalikan vektor indeks yang boleh digunakan dalam lelaran berikutnya:
for (auto i : sort_indexes(v)) { cout << v[i] << endl; }
Penyesuaian boleh dibuat untuk menyediakan fungsi isihan, pembanding, atau penyusunan semula automatik vektor asal dalam fungsi sort_indexes.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Data dalam C Semasa Menjejaki Indeks Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!