std::set::count(3)
π NAME π
okay so we're on the std::set::count(3) page from the C++ Standard Libary β yes, βLibaryβ with one r, that's the header vibe, no cap. The name line is literally std::set::count - std::set::count, and it's giving self-titled icon energy. π
πΈ Synopsis πΈ
size_type count( const Key& key ) const; (1)
template< class K > (2) (since C++14)
size_type count( const K& x ) const;
Returns the number of elements with key that compares equivalent to the specified argument. π«Ά
- Returns the number of elements with key
key. This is either1or0since this container does not allow duplicates. - Returns the number of elements with key that compares equivalent to the value
x. This overload participates in overload resolution only if the qualified-idCompare::is_transparentis valid and denotes a type. It allows calling this function without constructing an instance ofKey.
π¦ Parameters π¦
keyβ key value of the elements to countxβ alternative value to compare to the keys
π Return value π
Number of elements with key that compares equivalent to key or x, which, for overload (1), is either 1 or 0. β¨
π§ Complexity π§
Logarithmic in the size of the container plus linear in the number of elements found. π
π Notes π
Feature-test macro tea β:
__cpp_lib_generic_associative_lookup- Value:
201304L - Std:
(C++14) - Feature: Heterogeneous comparison lookup in associative containers; overload
(2)
- Value:
π₯ Example π₯
// Run this code
#include <functional>
#include <iostream>
#include <set>
struct S
{
int x;
S(int i) : x{i} { std::cout << "S{" << i << "} "; }
bool operator<(S const& s) const { return x < s.x; }
};
struct R
{
int x;
R(int i) : x{i} { std::cout << "R{" << i << "} "; }
bool operator<(R const& r) const { return x < r.x; }
};
bool operator<(R const& r, int i) { return r.x < i; }
bool operator<(int i, R const& r) { return i < r.x; }
int main()
{
std::set<int> t{3, 1, 4, 1, 5};
std::cout << t.count(1) << ", " << t.count(2) << ".\n";
std::set<S> s{3, 1, 4, 1, 5};
std::cout << ": " << s.count(1) << ", " << s.count(2) << ".\n";
// Two temporary objects S{1} and S{2} were created.
// Comparison function object is defaulted std::less<S>,
// which is not transparent (has no is_transparent member
type).
std::set<R, std::less<>> r{3, 1, 4, 1, 5};
std::cout << ": " << r.count(1) << ", " << r.count(2) << ".\n";
// C++14 heterogeneous lookup; temporary objects were not
created.
// Comparator std::less<void> has predefined is_transparent.
}
Output
1, 0.
S{3} S{1} S{4} S{1} S{5} : S{1} 1, S{2} 0.
R{3} R{1} R{4} R{1} R{5} : 1, 0.
π See also π
findβ finds element with specific key (public member function)equal_rangeβ returns range of elements matching a specific key (public member function)
mwah π this page's source is http://cppreference.com, version date 2024.06.10, and it's the std::set::count(3) page. periodt. π
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms