Pengenalan:
Dalam dunia pembangunan perisian, penggunaan fungsi yang cekap adalah penting untuk memaksimumkan prestasi. Apabila berurusan dengan banyak fungsi terbina dalam dalam enjin skrip, menyemak nama fungsi secara membuta tuli melalui tangga if-else boleh mengakibatkan overhed yang tidak perlu.
Memanfaatkan Peta STL:
Untuk meningkatkan kecekapan, pertimbangkan untuk menggunakan peta STL untuk menyimpan penunjuk fungsi dengan rentetan yang sepadan sebagai kunci. Pendekatan ini membolehkan pemanggilan fungsi yang pantas dan langsung dan bukannya melintasi rantaian syarat. Begini cara anda boleh melaksanakannya:
<code class="cpp">typedef void (*ScriptFunction)(void); typedef std::unordered_map<std::string, ScriptFunction> script_map;</code>
Definisi Jenis Penunjuk Fungsi:
Ini mengisytiharkan jenis alias ScriptFunction untuk mewakili penunjuk fungsi yang tidak mengambil hujah dan mengembalikan terbatal .
Mengisi Peta:
<code class="cpp">void some_function() { } ... script_map m; m.emplace("blah", &some_function);</code>
Di sini, kami mentakrifkan fungsi some_function() dan menambahkannya pada peta, mengaitkan namanya "blah" sebagai kunci.
Invokasi Fungsi:
<code class="cpp">void call_script(const std::string& pFunction) { auto iter = m.find(pFunction); if (iter == m.end()) { // not found } (*iter->second)(); }</code>
Dalam fungsi ini, kami mencari peta untuk nama fungsi yang disediakan dan, jika ditemui, laksanakannya terus melalui fungsi penunjuk disimpan dalam peta.
Kesimpulan:
Menggunakan peta STL untuk mengurus penunjuk fungsi memberikan keuntungan kecekapan yang ketara berbanding pernyataan if-else tradisional. Ia membolehkan panggilan fungsi pantas dengan merujuk terus penunjuk fungsi yang disimpan, menghapuskan overhed pemeriksaan keadaan.
Atas ialah kandungan terperinci Bagaimanakah Peta STL Dapat Meningkatkan Kecekapan Invokasi Fungsi dalam Enjin Skrip?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!