joe*_*pol 0 c++ containers std stdvector clang-tidy
执行检查时:
std::string st = "hello";
bool is_empty = st.size() > 0;
Run Code Online (Sandbox Code Playgroud)
我收到了上面提到的 Clang-Tidy 警告。
为什么最好使用该empty()方法?
joe*_*pol 11
根据Clang 文档
可读性容器大小空
检查对 size() 方法的调用是否可以替换为对 empty() 的调用。
应使用 empty() 方法而不是 size() 方法检查容器的空性。不保证 size() 是一个恒定时间函数,它通常更有效,也更清楚地表明使用 empty() 的意图。此外,一些容器可能实现了 empty() 方法,但没有实现 size() 方法。尽可能使用 empty() 可以在将来更轻松地切换到另一个容器。
std::forward_list是没有size()方法的容器的示例,如下所示:do-all-containers-have-a-size-function
根据isocpp的标准,C++11的时间复杂度size()是恒定的