std::set<Key,Compare,Allocator>::count
Von cppreference.com
| size_type count( const Key& key ) const; |
(1) | |
| template< class K > size_type count( const K& x ) const; |
(2) | (seit C++14) |
Gibt die Anzahl der Elemente mit einem Schlüssel zurück, der einem bestimmten Argument äquivalent ist.
1) Gibt die Anzahl der Elemente mit dem Schlüssel key zurück. Dies ist entweder 1 oder 0, da dieser Container keine Duplikate zulässt.
2) Gibt die Anzahl der Elemente mit einem Schlüssel zurück, der äquivalent zu dem Wert x ist. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn der qualifizierte Bezeichner Compare::is_transparent gültig ist und einen Typ bezeichnet. Sie ermöglicht den Aufruf dieser Funktion, ohne eine Instanz von
Key zu konstruieren.Inhalt |
[bearbeiten] Parameter
| key | - | Schlüsselwert der zu zählenden Elemente |
| x | - | alternativer Wert zum Vergleichen mit den Schlüsseln |
[bearbeiten] Rückgabewert
Anzahl der Elemente mit einem Schlüssel, der äquivalent zu key oder x ist, was für die Überladung (1) entweder 1 oder 0 ist.
[bearbeiten] Komplexität
Logarithmisch zur Größe des Containers plus linear zur Anzahl der gefundenen Elemente.
Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_generic_associative_lookup |
201304L |
(C++14) | Heterogene Schlüsselvergleichssuche in assoziativen Containern; Überladung (2) |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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. }
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.[bearbeiten] Siehe auch
| sucht ein Element mit einem bestimmten Schlüssel (public member function) | |
| gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen (public member function) |