std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::clear

From cppreference.com

 
 
 
 
void clear() noexcept;
(since C++11)

Erases all elements from the container. After this call, size() returns zero.

Invalidates any references, pointers, or iterators referring to contained elements. May also invalidate past-the-end iterators.

Parameters

(none)

Return value

(none)

Complexity

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

Example

#include <algorithm>
#include <iostream>
#include <unordered_map>
 
int main()
{
    std::unordered_map<int, char> container{{1, 'x'}, {2, 'y'}, {3, 'z'}};
 
    auto print = [](std::pair<const int, char>& n) { 
        std::cout << " " << n.first << '(' << n.second << ')'; 
    };
 
    std::cout << "Before clear:";
    std::for_each(container.begin(), container.end(), print);
    std::cout << "\nSize=" << container.size() << '\n';
 
    std::cout << "Clear\n";
    container.clear();
 
    std::cout << "After clear:";
    std::for_each(container.begin(), container.end(), print);
    std::cout << "\nSize=" << container.size() << '\n';
}

Possible output:

Before clear: 1(x) 2(y) 3(z)
Size=3
Clear
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 2550 C++11 for unordered associative containers, unclear if complexity is linear in the number of elements or buckets clarified that it's linear in the number of elements

See also

erases elements
(public member function)