.. 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 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 data; std::vector 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.