std::map<Key,T,Compare,Allocator>::clear - cppreference.com

From cppreference.com

voidclear();(noexcept since C++11)Erases all elements from the container. After this call,

size()

returns zero.

Invalidates any references, pointers, and iterators referring to contained elements. Any past-the-end iterator remains valid.

Complexity

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

Example

Run this code

#include<iostream>#include<string_view>#include<map>voidprint_info(std::string_viewrem,conststd::map<int,char>&v){std::cout<<rem<<"{ ";for(constauto&[key,value]:v)std::cout<<'['<<key<<"]:"<<value<<' ';std::cout<<"}\n";std::cout<<"Size="<<v.size()<<'\n';}intmain(){std::map<int,char>container{{1,'x'},{2,'y'},{3,'z'}};print_info("Before clear: ",container);container.clear();print_info("After clear: ",container);}Output:

Before clear: { [1]:x [2]:y [3]:z } Size=3 After clear: { } Size=0 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 224

C++98 the complexity was log(size())+N, but N was not defined corrected to 'linear in size()' See also