llvm/clang-tools-extra/docs/clang-tidy/checks/readability/container-size-empty.rst

.. title:: clang-tidy - readability-container-size-empty

readability-container-size-empty
================================


Checks whether a call to the ``size()``/``length()`` 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()``/``length()`` method. It is not guaranteed that
``size()``/``length()`` 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()``
or ``length()`` method. Using ``empty()`` whenever possible makes it easier to
switch to another container in the future.

The check issues warning if a container has ``empty()`` and ``size()`` or
``length()`` methods matching following signatures:

.. code-block:: c++

  size_type size() const;
  size_type length() const;
  bool empty() const;

`size_type` can be any kind of integer type.

.. option:: ExcludedComparisonTypes

    A semicolon-separated list of class names for which the check will ignore
    comparisons of objects with default-constructed objects of the same type.
    If a class is listed here, the check will not suggest using ``empty()``
    instead of such comparisons for objects of that class.
    Default value is: `::std::array`.