0

私は声明を出すつもりでしたswitchが、それは に対して行うことができないことに気付きましたstring。それで // ステートメントを書きifelse if関数elseをそれほど長くすべきではないことに気付きました。そこで、各カスケード ブロックの本体内に関数呼び出しを配置し​​、一連の関数ポインターに/をif使用する方がよいと考えました。hash_mapunordered_map

私の質問は次のとおりです。

  1. hash_map を使用して使用する関数をポイントし、そのように呼び出す方が効率的でしょうか?

    IIRC、マップは O(1) に近い必要があります。カスケード if は、一致が見つかるまでずっとテストする必要があるため、O(N) になります。ただし、文字列キーを使用したマップを使用して、O(1) が O(N) の性質を上回るのはどの時点 (何 N) でしょうか?

  2. それはより良いコーディングスタイルですか?

    特定のコードを、実行する必要のある操作に固有の小さな関数にカプセル化することを減らしているので、これは真実だと思います。これはどちらかというと意見の問題であることは承知していますが、コミュニティとして、これは依然として有効な問題だと思います。

4

2 に答える 2