Scroll to navigation

std::unordered_set::clear(3) C++ Standard Libary std::unordered_set::clear(3)

NAME

std::unordered_set::clear - std::unordered_set::clear

Synopsis


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

// Run this code


#include <iostream>
#include <string_view>
#include <unordered_set>


void print_info(std::string_view rem, const std::unordered_set<int>& v)
{
std::cout << rem << "{ ";
for (const auto& value : v)
std::cout << value << ' ';
std::cout << "}\n";
std::cout << "Size=" << v.size() << '\n';
}


int main()
{
std::unordered_set<int> container{1, 2, 3};
print_info("Before clear: ", container);
container.clear();
print_info("After clear: ", container);
}

Possible output:


Before clear: { 1 2 3 }
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
for unordered associative
LWG 2550 C++11 containers, unclear if complexity clarified that it's linear in
is linear in the number of the number of elements
elements or buckets

See also


erase erases elements
(public member function)

2024.06.10 http://cppreference.com