要提高腳本引擎的效率,請考慮利用 STL 對應來管理函數指標。這種方法消除了使用冗長的條件語句來呼叫特定函數的需求。
對於此實現,首先將函數指標類型宣告為typedef 以提高可讀性:
<code class="c++">typedef void (*ScriptFunction)(void); // function pointer type</code>
接下來,定義一個unordered_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中文網其他相關文章!