v.size() == 0
говорит: «Я сравниваю размер», но делает это, чтобы проверить, пуст ли контейнер.Существует небольшой алгоритм для переваривания (очень маленький, поскольку он состоит только из сравнения), прежде чем вы узнаете, что он делает.
OTOH, v.empty()
делает именно то, что говорит: он проверяет, пусто ли v
.
Из-за этого я явно предпочитаю № 2, поскольку он делает то, что говорит.Вот почему empty()
был изобретен, в конце концов.
Но есть и алгоритмическая причина, чтобы предпочесть empty()
: если кто-то позже изменит std::vector
в std::list
, v.size()
может есть O (n).(В C ++ 03 это гарантированно будет O (1) для std::vector
, но не для std::list
. Согласно комментарию Джеймса к ответ Прасуна это будет O (1) для все контейнеры в C ++ 1x.)