std::multiset<Key,Compare,Allocator>::find
De cppreference.com
iterator find( const Key& key ); |
(1) | |
const_iterator find( const Key& key ) const; |
(2) | |
template< class K > iterator find( const K& x ); |
(3) | (desde C++14) |
template< class K > const_iterator find( const K& x ) const; |
(4) | (desde C++14) |
1,2) Encuentra un elemento con clave equivalente a
key. 3,4) Encuentra un elemento con clave que se compara equivalente al valor
x. Esta sobrecarga solo participa en la resolución de sobrecargas si el id-calificado Compare::is_transparent es válido y denota un tipo. Permite llamar a esta función sin construir una instancia de Key.Parámetros
| key | - | Valor de la clave del elemento a buscar. |
| x | - | Un valor de cualquier tipo que pueda compararse transparentemente con una clave. |
Valor de retorno
Iterador a un elemento con una clave equivalente a key. Si tal elemento no se encuentra, se devuelve el iterador después del final (véase end()).
Complejidad
Logarítmica en el tamaño del contenedor.
Ejemplo
Ejecuta este código
#include <iostream>
#include <set>
struct ClavePesada { int x; int data[1000]; };
struct ClaveLigera { int x; };
// Nota: como se detalla arriba, el contenedor debe usar std::less<>
// (u otro comparador transparente) para acceder a estas sobrecargas.
// Esto incluye las sobrecargas estándar, como entre std::string y std::string_view.
bool operator<(const ClavePesada& fk, const ClaveLigera& lk) { return fk.x < lk.x; }
bool operator<(const ClaveLigera& lk, const ClavePesada& fk) { return lk.x < fk.x; }
bool operator<(const ClavePesada& fk1, const ClavePesada& fk2) { return fk1.x < fk2.x; }
int main()
{
// demo de comparación simple
std::multiset<int> ejemplo = {1, 2, 3, 4};
auto busqueda = ejemplo.find(2);
if (busqueda != ejemplo.end()) {
std::cout << "Se encontró " << (*busqueda) << '\n';
} else {
std::cout << "No se encontró\n";
}
// demo de comparación transparente
std::multiset<ClavePesada, std::less<>> ejemplo2 = { {1, {} }, {2, {} }, {3, {} }, {4, {} } };
ClaveLigera lk = {2};
auto busqueda2 = ejemplo2.find(lk);
if (busqueda2 != ejemplo2.end()) {
std::cout << "Se encontró " << busqueda2->x << '\n';
} else {
std::cout << "No se encontró\n";
}
}
Salida:
Se encontró 2
Se encontró 2
Véase también
| Devuelve el número de elementos que coinciden con una clave específica. (función miembro pública) | |
| Devuelve un rango de elementos que coinciden con una clase específica. (función miembro pública) |