При выполнении проверки:
std::string st = "hello"; bool is_empty = st.size() > 0;
Я получаю предупреждение Clang-Tidy, упомянутое выше.
Почему лучше вместо этого использовать метод empty()?
empty()
Согласно документации Clang
readability-container-size-empty Проверяет, является ли вызов size () метод может быть заменен вызовом empty (). Пустота контейнера должна проверяться с помощью метода empty () вместо метода size (). Не гарантируется, что size () является функцией постоянного времени, и, как правило, она более эффективна и также демонстрирует более четкое намерение использовать empty (). Кроме того, некоторые контейнеры могут реализовывать метод empty (), но не реализовывать метод size (). Использование empty () по возможности упрощает переключение на другой контейнер в будущем.
readability-container-size-empty
Проверяет, является ли вызов size () метод может быть заменен вызовом empty ().
Пустота контейнера должна проверяться с помощью метода empty () вместо метода size (). Не гарантируется, что size () является функцией постоянного времени, и, как правило, она более эффективна и также демонстрирует более четкое намерение использовать empty (). Кроме того, некоторые контейнеры могут реализовывать метод empty (), но не реализовывать метод size (). Использование empty () по возможности упрощает переключение на другой контейнер в будущем.
std::forward_list - это пример для контейнера, у которого нет метода size(), как показано здесь: do-all-container-have-a-size-function
std::forward_list
size()
После C ++ 11 временная сложность size() составляет константа в соответствии со стандартом .iso cpp