Namespaces
Variants

std::set<Key,Compare,Allocator>:: count

From cppreference.net

size_type count ( const Key & key ) const ;
(1) (constexpr seit C++26)
template < class K >
size_type count ( const K & x ) const ;
(2) (seit C++14)
(constexpr seit C++26)

Gibt die Anzahl der Elemente zurück, deren Schlüssel zum angegebenen Argument äquivalent vergleicht.

1) Gibt die Anzahl der Elemente mit dem Schlüssel key zurück. Dies ist entweder 1 oder 0 , da Schlüssel immer eindeutig sind.
2) Gibt die Anzahl der Elemente zurück, deren Schlüssel äquivalent zu x verglichen wird.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn Compare transparent ist. Sie ermöglicht den Aufruf dieser Funktion ohne Konstruktion einer Instanz von Key .

Inhaltsverzeichnis

Parameter

key - Schlüsselwert der zu zählenden Elemente
x - Alternativer Wert zum Vergleich mit den Schlüsseln

Rückgabewert

Anzahl der Elemente mit Schlüssel, der äquivalent zu key oder x vergleicht.

Komplexität

Logarithmisch in der Größe des Containers plus linear in der Anzahl der gefundenen Elemente.

Hinweise

Feature-Test Makro Wert Std Funktion
__cpp_lib_generic_associative_lookup 201304L (C++14) Heterogener Vergleichslookup in assoziativen Containern ; Überladung (2)

Beispiel

#include <functional>
#include <iostream>
#include <set>
struct S
{
    int x;
    S(int i) : x{i} { std::cout << "S{" << i << "} "; }
    bool operator<(const R& s) const { return x < s.x; }
};
struct R
{
    int x;
    R(int i) : x{i} { std::cout << "R{" << i << "} "; }
    bool operator<(const R& r) const { return x < r.x; }
};
bool operator<(const R& r, int i) { return r.x < i; }
bool operator<(int i, const R& 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";
        // Es wurden zwei temporäre Objekte S{1} und S{2} erstellt.
        // Vergleichsfunktionsobjekt ist standardmäßig std::less<S>,
        // welches nicht transparent ist (keinen "is_transparent" Typ besitzt).
    std::set<R, std::less<>> r{3, 1, 4, 1, 5};
    std::cout << ": " << r.count(1) << ", " << r.count(2) << ".\n";
        // C++14 heterogener Lookup; temporäre Objekte wurden nicht erstellt.
        // Komparator std::less<void> besitzt vordefinierten "is_transparent".
}

Ausgabe:

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.

Siehe auch

findet Element mit spezifischem Schlüssel
(öffentliche Elementfunktion)
gibt Bereich der Elemente zurück, die einem spezifischen Schlüssel entsprechen
(öffentliche Elementfunktion)