When performing the check:
std::string st = "hello";
bool is_empty = st.size() > 0;
I get the Clang-Tidy warning mentioned above.
Why is it better to use the empty()
method instead?
According to Clang documentation
readability-container-size-empty
Checks whether a call to the size() method can be replaced with a call to empty().
The emptiness of a container should be checked using the empty() method instead of the size() method. It is not guaranteed that size() is a constant-time function, and it is generally more efficient and also shows clearer intent to use empty(). Furthermore some containers may implement the empty() method but not implement the size() method. Using empty() whenever possible makes it easier to switch to another container in the future.
std::forward_list
is and example to a container that doesn't have size()
method as seen here : do-all-containers-have-a-size-function
After C++11 time complexity of size()
is constant according to its standard by isocpp