Namespaces
Variants

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

From cppreference.net

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

Devuelve el número de elementos cuya clave es equivalente al argumento especificado.

1) Devuelve el número de elementos con clave key . Esto es 1 o 0 ya que las claves siempre son únicas.
2) Devuelve el número de elementos con clave que se compara como equivalente a x .
Esta sobrecarga participa en la resolución de sobrecarga solo si Compare es transparent . Permite llamar a esta función sin construir una instancia de Key .

Contenidos

Parámetros

key - valor clave de los elementos a contar
x - valor alternativo para comparar con las claves

Valor de retorno

Número de elementos con clave que compara equivalente a key o x .

Complejidad

Logarítmico en el tamaño del contenedor más lineal en el número de elementos encontrados.

Notas

Macro de prueba de características Valor Estándar Característica
__cpp_lib_generic_associative_lookup 201304L (C++14) Búsqueda de comparación heterogénea en contenedores asociativos ; sobrecarga (2)

Ejemplo

#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";
        // Se crearon dos objetos temporales S{1} y S{2}.
        // El objeto función de comparación es std::less<S> por defecto,
        // que no es transparente (no tiene el tipo anidado "is_transparent").
    std::set<R, std::less<>> r{3, 1, 4, 1, 5};
    std::cout << ": " << r.count(1) << ", " << r.count(2) << ".\n";
        // Búsqueda heterogénea de C++14; no se crearon objetos temporales.
        // El comparador std::less<void> tiene "is_transparent" predefinido.
}

Salida:

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.

Véase también

encuentra elemento con clave específica
(función miembro pública)
devuelve rango de elementos que coinciden con una clave específica
(función miembro pública)