C および C++ コンパイラは通常、関数との比較を最適化しますか?
たとえば、このページsize
では、C++ の std::lists の関数が、いくつかの標準ライブラリの実装で線形複雑度 O(N) を持つことができることを示唆しています (これは、リンクされたリストでは意味があります)。
しかし、その場合、myList
が巨大なリストである場合、このようなものはどうなるでしょうか?
if (myList.size() < 5) return 1;
else return 2;
size() 関数は、N 個のリスト メンバーをすべて見つけてカウントしますか? それとも、5 つのメンバーを見つけた後に短絡するように最適化しますか?