私はhteコードを使用する場合、バイナリツリーを使用して値を検索するスイッチ構造のようにコンパイラが最適化しますか?現代のコンパイラは自動的に次のC++コードを最適化しますか?
if (X == "aaaa" || X == "bbbb" || X == "cccc" || X == "dddd")
{
}
else if (X == "abcd" || X == "cdef" || X == "qqqq")
{
}
これは一例ですが、[OK]を、Xは文字列ですが、私は実際にそれがここで問題はないと思う引用記号
UPDATE
内に何のないパターンはありません私が知りたいのは、if
内のすべてがすべて単一の変数であったときに最適化されます。
「X」とは何ですか?カスタム '演算子=='または(おそらく 'const')' char * 'を持つ文字列クラスですか? – delnan
@Aaron私はうまくいきません:-)オーバーロードされた 'operator =='を持つ 'std :: string'sが関係している限り、私は懐疑的ですが、このような単純な型を比較するとクールな最適化が期待できます。 – Kos
Re:あなたの編集:それは問題です!問題の '演算子=='が乱数を見たり、ロギングやスローをした場合はどうなりますか? – delnan