スクリプト エンジンの効率を高めるには、関数ポインターの管理に STL マップを利用することを検討してください。このアプローチにより、特定の関数を呼び出すための長い条件文が不要になります。
この実装では、読みやすくするために関数ポインタ型を typedef として宣言することから始めます。
<code class="c++">typedef void (*ScriptFunction)(void); // function pointer type</code>
次に、 unowned_map は script_map という名前で、関数名と対応するポインター アドレスの ScriptFunction 値を表す文字列キーを持ちます:
<code class="c++">typedef std::unordered_map<std::string, ScriptFunction> script_map;</code>
関数登録の例:
<code class="c++">void some_function() {} script_map m; m.emplace("blah", &some_function);</code>
関数を呼び出すには、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>
ScriptFunction 型を std::function* 何でも*/> に一般化できることを強調します。単なる関数ポインター以上のものに対応します。
以上が関数ポインタ管理用の STL マップを使用してスクリプト エンジンの効率を向上するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。