„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können Sie die Effizienz der Skript-Engine mit STL-Maps für die Funktionszeigerverwaltung verbessern?

Wie können Sie die Effizienz der Skript-Engine mit STL-Maps für die Funktionszeigerverwaltung verbessern?

Veröffentlicht am 03.11.2024
Durchsuche:883

How Can You Improve Scripting Engine Efficiency with STL Maps for Function Pointer Management?

Einbinden einer STL-Zuordnung in eine Skript-Engine für die Speicherung von Funktionszeigern

Um die Effizienz Ihrer Skript-Engine zu steigern, sollten Sie die Nutzung einer STL-Zuordnung für die Verwaltung von Funktionszeigern in Betracht ziehen. Dieser Ansatz macht langwierige bedingte Anweisungen zum Aufrufen bestimmter Funktionen überflüssig.

Für diese Implementierung beginnen Sie damit, Ihren Funktionszeigertyp zur besseren Lesbarkeit als Typedef zu deklarieren:

typedef void (*ScriptFunction)(void); // function pointer type

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:

typedef std::unordered_map<:string scriptfunction> script_map;

Beispielfunktionsregistrierung:

void some_function() {}
script_map m;
m.emplace("blah", &some_function);

Um eine Funktion aufzurufen, definieren Sie eine call_script-Funktion:

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
  }
}

Betonen Sie, dass Sie den ScriptFunction-Typ auf std::function*whatever*/> verallgemeinern können, um mehr als nur bloße Funktionszeiger abzudecken.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3