From cppreference.com
voidclear();(noexcept since C++11)
(constexpr since C++20)Erases all elements from the container. After this call,
returns zero.
Invalidates any references, pointers, and iterators referring to contained elements. Any past-the-end iterators are also invalidated.
Leaves the
of the vector unchanged (Note: the standard's restriction on the changes to capacity is in the specification of
, see
).
Complexity
Linear in the size of the container, i.e., the number of elements.
Example
Run this code
#include<iostream>#include<string_view>#include<vector>voidprint_info(std::string_viewrem,conststd::vector<int>&v){std::cout<<rem<<"{ ";for(constauto&value:v)std::cout<<value<<' ';std::cout<<"}\n";std::cout<<"Size="<<v.size()<<", Capacity="<<v.capacity()<<'\n';}intmain(){std::vector<int>container{1,2,3};print_info("Before clear: ",container);container.clear();print_info("After clear: ",container);}Output:
Before clear: { 1 2 3 } Size=3, Capacity=3 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
C++11 complexity guarantee was mistakenly omitted in C++11 complexity reaffirmed as linear See also