std::vector::clear(3)

NAME
std::vector::clear - std::vector::clear

Synopsis
   void clear(); (until C++11)
   void clear() noexcept; (since C++11)
                        (until C++20)
   constexpr void clear() noexcept; (since C++20)
   Erases all elements from the container. After this call, size() returns zero.
   Invalidates any references, pointers, or iterators referring to contained elements.
   Any past-the-end iterators are also invalidated.
   Leaves the capacity() of the vector unchanged (note: the standard's restriction on
   the changes to capacity is in the specification of vector::reserve, see [1])

Parameters
   (none)

Return value
   (none)

Complexity
   Linear in the size of the container, i.e., the number of elements.

Example
// Run this code
 #include <algorithm>
 #include <iostream>
 #include <vector>
 int main()
 {
     std::vector<int> container{1, 2, 3};
     auto print = [](const int& n) { std::cout << " " << n; };
     std::cout << "Before clear:";
     std::for_each(container.begin(), container.end(), print);
     std::cout << "\nSize=" << container.size() << ", Capacity=" << container.capacity() << '\n';
     std::cout << "Clear\n";
     container.clear();
     std::cout << "After clear:";
     std::for_each(container.begin(), container.end(), print);
     std::cout << "\nSize=" << container.size() << ", Capacity=" << container.capacity() << '\n';
 }

Output:
 Before clear: 1 2 3
 Size=3, Capacity=3
 Clear
 After clear:
 Size=0, Capacity=3
  Defect reports
   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.
      DR Applied to Behavior as published Correct behavior
   LWG 2231 C++11 complexity guarantee was mistakenly complexity reaffirmed as
                       omitted in C++11 linear

See also
   erase erases elements
         (public member function)