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, and 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 <iostream>
#include <string_view>
#include <unordered_map>
 
void print_info(std::string_view rem, const std::unordered_map<int, char>& v)
{
    std::cout << rem << "{ ";
    for (const auto& [key, value] : v)
        std::cout << '[' << key << "]:" << value << ' ';
    std::cout << "}\n";
    std::cout << "Size=" << v.size() << '\n';
}
 
int main()
{
    std::unordered_map<int, char> container{{1, 'x'}, {2, 'y'}, {3, 'z'}};
    print_info("Before clear: ", container);
    container.clear();
    print_info("After clear: ", container);
}

Possible 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 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)