Lelaran pada Pasangan Elemen Berturut-turut dengan Idiom C
Satu tugas pengaturcaraan biasa ialah mengulang koleksi dan melakukan tindakan antara setiap pasangan berturut-turut elemen. Walaupun gelung julat-untuk asas boleh mengendalikan lelaran, ia selalunya menghasilkan pemisah yang tidak diingini pada penghujungnya.
Nasib baik, terdapat beberapa pendekatan idiomatik untuk menyelesaikan isu ini. Satu kaedah melibatkan penggunaan penuding tambahan untuk menjejaki keadaan pemisah:
<code class="cpp">const auto separator = "WhatYouWantHere"; const auto* sep = ""; for(const auto& item : items) { std::cout << sep << item; sep = separator; }
Dalam contoh ini, penuding sep dimulakan kepada rentetan kosong. Semasa gelung berlangsung, sep dikemas kini dengan rentetan pemisah apabila elemen bukan akhir ditemui. Secara lalai, sep akan menjadi rentetan kosong sebelum elemen pertama, menyebabkan tiada pemisah utama.
Sebagai alternatif, sesetengah pustaka C menyediakan iterator khusus yang mengendalikan logik pemisah. Sebagai contoh, pustaka Boost Range termasuk fungsi adjacent_filtered, yang boleh digunakan untuk menggunakan predikat pada pasangan elemen berturut-turut dan menapis mana-mana yang gagal predikat:
<code class="cpp">#include <boost/range/algorithm/adjacent_filtered.hpp> for(auto& adjacent_pair : boost::adjacent_filtered(items, [](const auto& lhs, const auto& rhs) { return lhs != rhs; })) { std::cout << adjacent_pair.first << " separator " << adjacent_pair.second; }</code>
Pendekatan ini menyediakan penyelesaian yang ringkas dan elegan , tetapi memerlukan penggunaan perpustakaan luaran. Akhirnya, pilihan simpulan bahasa mana yang hendak digunakan bergantung pada keperluan dan keutamaan khusus pengaturcara.
Atas ialah kandungan terperinci Bagaimana untuk Mengulangi Pasangan Elemen Berturut-turut dalam C tanpa Pemisah yang Tidak Diingini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!