"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment pouvez-vous améliorer l'efficacité du moteur de script avec les cartes STL pour la gestion des pointeurs de fonction ?

Comment pouvez-vous améliorer l'efficacité du moteur de script avec les cartes STL pour la gestion des pointeurs de fonction ?

Publié le 2024-11-03
Parcourir:460

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

Intégration d'une carte STL dans un moteur de script pour le stockage des pointeurs de fonction

Pour améliorer l'efficacité de votre moteur de script, envisagez d'utiliser une carte STL pour gérer les pointeurs de fonction. Cette approche élimine le besoin de longues instructions conditionnelles pour appeler des fonctions spécifiques.

Pour cette implémentation, commencez par déclarer votre type de pointeur de fonction en tant que typedef pour plus de lisibilité :

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

Ensuite, définissez un unordered_map nommé script_map avec des clés de chaîne représentant les noms de fonction et les valeurs ScriptFunction pour les adresses de pointeur correspondantes :

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

Exemple d'enregistrement de fonction :

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

Pour appeler une fonction, définissez une fonction call_script :

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

Insistez sur le fait que vous pouvez généraliser le type ScriptFunction à std::function* peu importe*/> pour répondre à plus que de simples pointeurs de fonction.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3