私は声明を出すつもりでしたswitch
が、それは に対して行うことができないことに気付きましたstring
。それで // ステートメントを書きif
、else if
関数else
をそれほど長くすべきではないことに気付きました。そこで、各カスケード ブロックの本体内に関数呼び出しを配置し、一連の関数ポインターに/をif
使用する方がよいと考えました。hash_map
unordered_map
私の質問は次のとおりです。
hash_map を使用して使用する関数をポイントし、そのように呼び出す方が効率的でしょうか?
IIRC、マップは O(1) に近い必要があります。カスケード if は、一致が見つかるまでずっとテストする必要があるため、O(N) になります。ただし、文字列キーを使用したマップを使用して、O(1) が O(N) の性質を上回るのはどの時点 (何 N) でしょうか?
それはより良いコーディングスタイルですか?
特定のコードを、実行する必要のある操作に固有の小さな関数にカプセル化することを減らしているので、これは真実だと思います。これはどちらかというと意見の問題であることは承知していますが、コミュニティとして、これは依然として有効な問題だと思います。