std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::find - cppreference.com

From cppreference.com

iteratorfind(constKey&key); (1) (since C++11)const_iteratorfind(constKey&key)const; (2) (since C++11)template<classK>iteratorfind(constK&x); (3)(since C++20)template<classK>const_iteratorfind(constK&x)const; (4)(since C++20)1,2) Finds an element with key equivalent to key.

3,4) Finds an element with key that compares equivalent to the value x. This overload participates in overload resolution only if Hash::is_transparent and KeyEqual::is_transparent are valid and each denotes a type. This assumes that such Hash is callable with both K and Key type, and that the KeyEqual is transparent, which, together, allows calling this function without constructing an instance of Key.

Parameters

key - key value of the element to search for x - a value of any type that can be transparently compared with a key Return value

An iterator to the requested element. If no such element is found, past-the-end (see

end()

) iterator is returned.

Complexity

Constant on average, worst case linear in the size of the container.

Notes

Feature-test

macroValueStdFeature

__cpp_lib_generic_unordered_lookup

201811L

(C++20)Heterogeneous comparison lookup in

unordered associative containers

; overloads (

3,4

)Example

Run this code

#include<cstddef>#include<functional>#include<iostream>#include<string>#include<string_view>#include<unordered_map>usingnamespacestd::literals;structstring_hash{usinghash_type=std::hash<std::string_view>;usingis_transparent=void;std::size_toperator()(constchar*str)const{returnhash_type{}(str);}std::size_toperator()(std::string_viewstr)const{returnhash_type{}(str);}std::size_toperator()(std::stringconst&str)const{returnhash_type{}(str);}};intmain(){// simple comparison demostd::unordered_map<int,char>example{{1,'a'},{2,'b'}};if(autosearch=example.find(2);search!=example.end())std::cout<<"Found "<<search->first<<' '<<search->second<<'\n';elsestd::cout<<"Not found\n";// C++20 demo: Heterogeneous lookup for unordered containers (transparent hashing)std::unordered_map<std::string,size_t,string_hash,std::equal_to<>>map{{"one"s,1}};std::cout<<std::boolalpha<<(map.find("one")!=map.end())<<'\n'<<(map.find("one"s)!=map.end())<<'\n'<<(map.find("one"sv)!=map.end())<<'\n';}Output:

Found 2 b true true true See also

access specified element with bounds checking
(public member function)

[edit]

access or insert specified element
(public member function)

[edit]

returns the number of elements matching specific key
(public member function)

[edit]

returns range of elements matching a specific key
(public member function)

[edit]