Untuk meningkatkan kecekapan enjin skrip anda, pertimbangkan untuk memanfaatkan peta STL untuk mengurus penunjuk fungsi. Pendekatan ini menghapuskan keperluan untuk pernyataan bersyarat yang panjang untuk menggunakan fungsi tertentu.
Untuk pelaksanaan ini, mulakan dengan mengisytiharkan jenis penunjuk fungsi anda sebagai typedef untuk kebolehbacaan:
<code class="c++">typedef void (*ScriptFunction)(void); // function pointer type</code>
Seterusnya, tentukan peta_unordered bernama script_map dengan kekunci rentetan yang mewakili nama fungsi dan nilai ScriptFunction untuk alamat penuding yang sepadan:
<code class="c++">typedef std::unordered_map<std::string, ScriptFunction> script_map;</code>
Contoh pendaftaran fungsi:
<code class="c++">void some_function() {} script_map m; m.emplace("blah", &some_function);</code>
Untuk memanggil fungsi, tentukan fungsi call_script:
<code class="c++">void call_script(const std::string& pFunction) { auto iter = m.find(pFunction); if (iter == m.end()) { // function not found } else { (*iter->second)(); // invoke the function via the pointer } }</code>
Tegaskan bahawa anda boleh menyamaratakan jenis ScriptFunction kepada std::function* apa sahaja*/> untuk memenuhi lebih daripada sekadar penunjuk fungsi kosong.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Meningkatkan Kecekapan Enjin Skrip dengan Peta STL untuk Pengurusan Penunjuk Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!