Namespaces
Variants
Views
Actions

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

From cppreference.com
< cpp‎ | container‎ | unordered multimap
Revision as of 14:45, 6 June 2011 by P12 (Talk | contribs)

 
 
 
 
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.

Contents

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_multimap<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_multimap<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) [edit]