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

DDD
リリース: 2024-10-27 07:38:31
オリジナル
699 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!