Я должен предположить, что ваше #comment
о том, насколько дешевым (= быстрым) является тест на равенство, было не просто так. Учитывая это, вам, вероятно, следует продолжать использовать дешевый тест на равенство. Это очень быстро, намного быстрее, чем eq
, не говоря уже о любом глубоком сравнении.
Возможно, что объект с прямо или косвенно перегруженным оператором ==
может узурпировать тест в своих целях. Но если он делает это, вы даже можете предпочесть его опосредованный ответ.
Какой подход вы выберете, может зависеть от того, что вы знаете о классах объекта. Подходы, применимые к общим случаям, не всегда оптимальны для конкретных. Чем больше вы о чем-то знаете, тем лучше вы можете это оптимизировать — и наоборот.
Поэтому, если вы знаете, что не используете класс с применимой перегрузкой, нет причин использовать не встроенную библиотечную функцию, и есть веская причина не делать этого. Если вы не знаете о перегрузке или знаете о ней, но не хотите, чтобы она применялась, то, возможно, выберите медленный подход.
Пока вы понимаете проблему перегрузки, ошибочно считать один подход правильным, а другой неправильным. У каждого свое предназначение. Если бы всегда было неправильно делать то, что вы делаете, то эта операция была бы либо запрещена, либо, по крайней мере, предупреждена.
Вы заметите, что он не так помечен.
person
tchrist
schedule
31.10.2010