Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membandingkan Pembolehubah Terhadap Pelbagai Nilai dengan Cekap dalam C?

Bagaimanakah Saya Boleh Membandingkan Pembolehubah Terhadap Pelbagai Nilai dengan Cekap dalam C?

Susan Sarandon
Lepaskan: 2024-12-29 13:19:14
asal
791 orang telah melayarinya

How Can I Efficiently Compare a Variable Against Multiple Values in C  ?

Membandingkan Pembolehubah kepada Berbilang Nilai Dengan Cekap

Selalunya dalam pengaturcaraan, adalah perlu untuk menyemak sama ada pembolehubah sepadan dengan salah satu daripada beberapa pilihan. Ini boleh dicapai melalui pelbagai kaedah, tetapi penting untuk mengutamakan kecekapan.

Kaedah Tidak Cekap

Percubaan untuk membandingkan pembolehubah kepada berbilang nilai menggunakan operator logik seperti OR boleh membawa kepada kod yang tidak cekap. Contohnya:

if (num == (1 || 2 || 3))
Salin selepas log masuk

Pendekatan ini menilai setiap ungkapan logik (1 || 2, 2 || 3) secara berasingan, yang boleh mengakibatkan pemprosesan terbuang.

Penyelesaian Cekap dalam C 11

Satu penyelesaian cekap dalam C 11 melibatkan penggunaan std::initializer_list. Fungsi templat berikut mengambil pembolehubah dan senarai pemula bagi kemungkinan padanan:

template <typename T>
bool is_in(const T&amp; v, std::initializer_list<T> lst)
{
    return std::find(std::begin(lst), std::end(lst), v) != std::end(lst);
}
Salin selepas log masuk

Kini anda boleh menggunakannya seperti:

if (is_in(num, {1, 2, 3})) { DO STUFF }
Salin selepas log masuk

Penyelesaian Lebih Cekap dalam C 17

C 17 memperkenalkan penyelesaian yang lebih cekap yang berfungsi dengan baik dengan mana-mana jenis:

template<typename First, typename ... T>
bool is_in(First &amp;&amp;first, T &amp;&amp; ... t)
{
    return ((first == t) || ...);
}
Salin selepas log masuk

Fungsi templat ini menggunakan pemajuan sempurna untuk menilai setiap perbandingan dengan cekap, menghasilkan kod yang berprestasi setanding dengan perbandingan tulisan tangan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Pembolehubah Terhadap Pelbagai Nilai dengan Cekap 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