.. title:: clang-tidy - performance-inefficient-vector-operation

performance-inefficient-vector-operation
========================================

Finds possible inefficient ``std::vector`` operations (e.g. ``push_back``,
``emplace_back``) that may cause unnecessary memory reallocations.

Currently, the check only detects following kinds of loops with a single
statement body:

* Counter-based for loops start with 0:

.. code-block:: c++

  std::vector<int> v;
  for (int i = 0; i < n; ++i) {
    v.push_back(n);
    // This will trigger the warning since the push_back may cause multiple
    // memory reallocations in v. This can be avoid by inserting a 'reserve(n)'
    // statement before the for statement.
  }


* For-range loops like ``for (range-declaration : range_expression)``, the type
  of ``range_expression`` can be ``std::vector``, ``std::array``,
  ``std::deque``, ``std::set``, ``std::unordered_set``, ``std::map``,
  ``std::unordered_set``:

.. code-block:: c++

  std::vector<int> data;
  std::vector<int> v;

  for (auto element : data) {
    v.push_back(element);
    // This will trigger the warning since the 'push_back' may cause multiple
    // memory reallocations in v. This can be avoid by inserting a
    // 'reserve(data.size())' statement before the for statement.
  }


Options
-------

.. option:: VectorLikeClasses

   Semicolon-separated list of names of vector-like classes. By default only
   ``::std::vector`` is considered.
