"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se puede mejorar la eficiencia del motor de secuencias de comandos con mapas STL para la gestión de punteros de funciones?

¿Cómo se puede mejorar la eficiencia del motor de secuencias de comandos con mapas STL para la gestión de punteros de funciones?

Publicado el 2024-11-03
Navegar:154

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

Incorporación de un mapa STL en un motor de scripting para el almacenamiento de punteros de función

Para mejorar la eficiencia de su motor de scripting, considere aprovechar un mapa STL para administrar los punteros de función. Este enfoque elimina la necesidad de declaraciones condicionales largas para invocar funciones específicas.

Para esta implementación, comience declarando el tipo de puntero de función como typedef para facilitar la lectura:

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

A continuación, defina un mapa_unordered_map llamado script_map con claves de cadena que representan nombres de funciones y valores de ScriptFunction para las direcciones de puntero correspondientes:

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

Ejemplo de registro de función:

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

Para llamar a una función, defina una función 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
  }
}

Enfatice que puede generalizar el tipo ScriptFunction a std::function* lo que sea*/> para atender a algo más que simples punteros de función.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3