ホームページ >バックエンド開発 >C++ >関数ポインタ管理用の STL マップを使用してスクリプト エンジンの効率を向上するにはどうすればよいでしょうか?

関数ポインタ管理用の STL マップを使用してスクリプト エンジンの効率を向上するにはどうすればよいでしょうか?

DDD
DDDオリジナル
2024-10-27 07:38:31782ブラウズ

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

関数ポインターを保存するために STL マップをスクリプト エンジンに組み込む

スクリプト エンジンの効率を高めるには、関数ポインターの管理に STL マップを利用することを検討してください。このアプローチにより、特定の関数を呼び出すための長い条件文が不要になります。

この実装では、読みやすくするために関数ポインタ型を typedef として宣言することから始めます。

<code class="c++">typedef void (*ScriptFunction)(void); // function pointer type</code>

次に、 unowned_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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。