std::unordered_set::count(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸŽ€ NAME πŸŽ€

okay so bestie, we're in the C++ Standard Libary manual, section 3, and this page is all about std::unordered_set::count. The NAME line is std::unordered_set::count - std::unordered_set::count β€” yes, same thing twice, she said what she said. Self-referential queen behavior, honestly. πŸ’…


✨ Synopsis ✨

Here's the signature tea, with both overloads:

size_type count( const Key& key ) const; (1) (since C++11)
template< class K >                      (2) (since C++20)
size_type count( const K& x ) const;
  1. Overload (1) returns the number of elements with a key that compares equal to the specified argument key, which is either 0 or 1 since this container does not allow duplicates.
  2. Overload (2) returns the number of elements with a key that compares equivalent to the specified argument x. This overload participates in overload resolution only if Hash::is_transparent and KeyEqual::is_transparent are valid and each denotes a type. This assumes that such Hash is callable with both K and Key type, and that the KeyEqual is transparent, which, together, allows calling this function without constructing an instance of Key.

🌸 Parameters 🌸

  • key β€” key value of the elements to count.
  • x β€” a value of any type that can be transparently compared with a key.

πŸ’– Return value πŸ’–

  1. Number of elements with key key, that is either 1 or 0.
  2. Number of elements with key that compares equivalent to x.

πŸ”₯ Complexity πŸ”₯

Constant on average, worst case linear in the size of the container.


🧚 Notes 🧚

Feature-test macro situation, bestie:

  • Feature-test macro: __cpp_lib_generic_unordered_lookup
  • Value: 201811L
  • Std: (C++20)
  • Feature: Heterogeneous comparison lookup in unordered associative containers, overload (2)

πŸ“ Example πŸ“

// Run this code

#include <algorithm>
#include <iostream>
#include <unordered_set>

int main()
{
    std::unordered_set set{2, 7, 1, 8, 2, 8, 1, 8, 2, 8};

    std::cout << "The set is: ";
    for (int e : set)
        std::cout << e << ' ';

    const auto [min, max] = std::ranges::minmax(set);

    std::cout << "\nNumbers from " << min << " to " << max << " that are in the set: ";
    for (int i{min}; i <= max; ++i)
        if (set.count(i) == 1)
            std::cout << i << ' ';
    std::cout << '\n';
}

Possible output:

The set is: 8 1 7 2
Numbers from 1 to 8 that are in the set: 1 2 7 8

πŸ‘‘ See also πŸ‘‘

  • find β€” finds element with specific key (public member function).
  • contains β€” checks if the container contains element with specific key (C++20) (public member function).
  • equal_range β€” returns range of elements matching a specific key (public member function).

okay that's the whole page, bestie! It's from http://cppreference.com, version/date 2024.06.10, and it's the std::unordered_set::count(3) page. Periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from