我知道在檢查多個可能的變數值時,使用 switch-case 比鏈接 else-if 陳述句更有效。但我不知道的是它是如何如此快速地“跳”到正確的值的。它通常使用什么型別的函式或協議?
謝謝。
uj5u.com熱心網友回復:
看看這個,它在那里解釋得很好:
當編譯器編譯 switch 陳述句時,它將檢查每個 case 常量并創建一個“跳轉表”,它將用于根據運算式的值選擇執行路徑。
https://www.geeksforgeeks.org/switch-vs-else/#:~:text=A switch statement is usually,a set of nested ifs.&text=The compiler can% 20do this,compiler has no such knowledge。
uj5u.com熱心網友回復:
對于少數條件,差異很小,但對于許多條件,您最好使用開關。原因是當有很多值和條件時,它使用hashtable/hashmap(字典),它是一種訪問元素復雜度為O(1)的資料結構,以確保所有值獲得相同的訪問時間。這就是為什么當有很多條件需要檢查時,switch 比 ifs 更好。
uj5u.com熱心網友回復:
對于發布這樣的問題,How is <A> more efficient than <B>您必須非常確定它實際上是真實的。
我敢打賭我可以想出一些if...else if...表現更好的例子。例如,從分支預測中受益。
此外,O(1)復雜性可能需要更長的時間O(n),具體取決于恒定成本。而且n,當然。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/351336.html
