Espacios de nombres
Variantes
Acciones

std::map<Key,T,Compare,Allocator>::find

De cppreference.com
< cpp‎ | container‎ | map
 
 
 
 
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.

Contenido

[editar]Parámetros

key - Valor de la clave del elemento a buscar.
x - Un valor de cualquier tipo que pueda compararse transparentemente con una clave.

[editar]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()).

[editar]Complejidad

Logarítmica en el tamaño del contenedor.

[editar]Ejemplo

#include <iostream>#include <...>   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 simplestd::map<int,char> ejemplo ={{1,'a'},{2,'b'}};   auto busqueda = ejemplo.find(2);if(busqueda != ejemplo.end()){std::cout<<"Se encontró "<< busqueda->first <<" "<< busqueda->second <<'\n';}else{std::cout<<"No se encontró\n";}   // demo de comparación transparentestd::map<ClavePesada, char, std::less<>> ejemplo2 ={{{1, {}},'a'}, {{2, {}},'b'}};   ClaveLigera lk ={2};auto busqueda2 = ejemplo2.find(lk);if(busqueda2 != ejemplo2.end()){std::cout<<"Se encontró "<< busqueda2->first.x<<" "<< busqueda2->second <<'\n';}else{std::cout<<"No se encontró\n";}// Obtención de iteradores constantes.// El compilador decide si devuelve un iterador de tipo (no) const al acceder a// map; para prevenir modificación intencional, una opción fácil es acceder a map// mediante referencia const.constauto& refejemplo2 = ejemplo2;auto busqueda3 = refejemplo2.find(lk);if(busqueda3 != ejemplo2.end()){std::cout<<"Se encontró "<< busqueda3->first.x<<' '<< busqueda3->second <<'\n';// busqueda3->second = 'c'; // ERROR: asignación de miembro// 'std::pair<const ClavePesada, char>::second'// en objeto de solo lectura}}

Salida:

Se encontró 2 b Se encontró 2 b Se encontró 2 b

[editar]Véase también

Devuelve el número de elementos que coinciden con una clave específica.
(función miembro pública)[editar]
Devuelve un rango de elementos que coinciden con una clase específica.
(función miembro pública)[editar]
close