Um die Effizienz Ihrer Skript-Engine zu steigern, sollten Sie die Nutzung einer STL-Karte für die Verwaltung von Funktionszeigern in Betracht ziehen. Dieser Ansatz macht lange bedingte Anweisungen zum Aufrufen bestimmter Funktionen überflüssig.
Für diese Implementierung beginnen Sie damit, Ihren Funktionszeigertyp zur besseren Lesbarkeit als Typdefinition zu deklarieren:
<code class="c++">typedef void (*ScriptFunction)(void); // function pointer type</code>
Als nächstes definieren Sie eine unordered_map namens script_map mit Zeichenfolgenschlüsseln, die Funktionsnamen und ScriptFunction-Werte für die entsprechenden Zeigeradressen darstellen:
<code class="c++">typedef std::unordered_map<std::string, ScriptFunction> script_map;</code>
Beispiel für die Funktionsregistrierung:
<code class="c++">void some_function() {} script_map m; m.emplace("blah", &some_function);</code>
Um eine Funktion aufzurufen, definieren Sie eine call_script-Funktion:
<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>
Betonen Sie, dass Sie den ScriptFunction-Typ auf std::function*whatever*/> verallgemeinern können. um mehr als nur bloße Funktionszeiger zu berücksichtigen.
Das obige ist der detaillierte Inhalt vonWie können Sie die Effizienz der Skript-Engine mit STL-Maps für die Funktionszeigerverwaltung verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!